CodyX 2023-02-16 19:03 采纳率: 0%
浏览 15

IIS请求视频文件的问题

IIS请求视频文件的问题
我的服务器上有很多视频文件,我希望通过视频url,请求视频的时候,
视频长度小于5分钟的视频,正常展示,大于5分钟的视频,只展示前5分钟。可以这样操作么?

  • 写回答

2条回答 默认 最新

  • Evaporator Core 2023-02-16 19:13
    关注

    可以通过以下方式实现:

    1.打开 Internet Information Services(IIS)管理器,找到你的网站,右键单击该网站,选择“添加应用程序”。
    2.在“添加应用程序”对话框中,指定别名、应用程序池和物理路径等相关信息,然后单击“确定”按钮。
    3.在应用程序的物理路径中,创建一个名为“Media”的文件夹,用于存放媒体文件。
    4.在 IIS 中为该文件夹添加 MIME 类型,以便服务器能够正确地识别媒体文件的格式。例如,你可以添加以下 MIME 类型:
    .mp4 video/mp4
    .mov video/quicktime
    .avi video/x-msvideo
    .wmv video/x-ms-wmv
    5.创建一个名为“StreamVideo.aspx”的 ASP.NET 网页,用于流式传输媒体文件。该网页可以使用以下代码实现:

    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.IO" %>
    <%@ Import Namespace="System.Web" %>
    <%@ Import Namespace="System.Web.UI" %>
    <%@ Import Namespace="System.Web.UI.WebControls" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            string filePath = Request.QueryString["file"];
            if (filePath != null)
            {
                string fileName = Path.GetFileName(filePath);
                string extension = Path.GetExtension(filePath);
                string contentType = "";
                switch (extension)
                {
                    case ".mp4":
                        contentType = "video/mp4";
                        break;
                    case ".mov":
                        contentType = "video/quicktime";
                        break;
                    case ".avi":
                        contentType = "video/x-msvideo";
                        break;
                    case ".wmv":
                        contentType = "video/x-ms-wmv";
                        break;
                    default:
                        Response.StatusCode = 404;
                        Response.End();
                        break;
                }
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.Buffer = false;
                Response.ContentType = contentType;
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
                using (FileStream fileStream = new FileStream(Server.MapPath(filePath), FileMode.Open, FileAccess.Read))
                {
                    long length = fileStream.Length;
                    long startBytes = 0;
                    int packSize = 1024 * 8; //10kb
                    if (Request.Headers["Range"] != null)
                    {
                        Response.StatusCode = 206;
                        string[] range = Request.Headers["Range"].Split(new char[] { '=', '-' });
                        startBytes = Convert.ToInt64(range[1]);
                    }
                    Response.AddHeader("Content-Length", (length - startBytes).ToString());
                    Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, length - 1, length));
                    fileStream.Seek(startBytes, SeekOrigin.Begin);
                    int maxCount = (int)Math.Ceiling((length - startBytes + 0.0) / packSize);
                    for (int i = 0; i < maxCount && Response.IsClientConnected; i++)
                    {
                        Response.BinaryWrite(fileStream.ReadBytes(packSize));
                    }
                }
                Response.Flush();
                Response.End();
            }
            else
            {
                Response.StatusCode = 404;
                Response.End();
            }
        }
    </script>
    

    6.可以通过以下格式请求媒体文件:

    http:////StreamVideo.aspx?file=

    其中, 是指你的服务器地址, 是指你的网站名称, 是指你要请求的媒体文件相对于 Media 文件夹的路径。

    例如,如果你的服务器地址为 192.168.1.100,你的网站名称为 MyWebsite,你的媒体文件位于 Media 文件夹下的 video.mp4 文件,那么你可以使用以下 URL 请求该文件:

    http://192.168.1.100/MyWebsite/StreamVideo.aspx?file=Media/video.mp4

    请注意,在这个例子中,媒体文件的路径相对于 StreamVideo.aspx 文件的位置。因此,如果你的 StreamVideo.aspx 文件不是位于网站根目录下,你需要在文件路径前面添加适当的路径。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月16日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备