加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

使用ASP.NET流视频

发布时间:2020-12-16 06:43:42 所属栏目:asp.Net 来源:网络整理
导读:有没有一种方法可以将视频通过asp.net流式传输到普通网页和移动设备?我尝试了以下但是它在我的索尼爱立信K810i中不起作用.当我在浏览器中尝试它时,我可以看到剪辑(不知道它是否正在流式传输). HTML: object type="video/3gpp" data="handlers/FileHandler.
有没有一种方法可以将视频通过asp.net流式传输到普通网页和移动设备?我尝试了以下但是它在我的索尼爱立信K810i中不起作用.当我在浏览器中尝试它时,我可以看到剪辑(不知道它是否正在流式传输).

HTML:

<object type="video/3gpp" 
        data="handlers/FileHandler.ashx" 
        id="player" 
        width="176" 
        height="148" 
        autoplay="true"></object>

FileHandler.ashx(Best way to stream files in ASP.NET):

public void ProcessRequest (HttpContext context) {

    string path = "~/files/do.3gp";

    string localPath = context.Server.MapPath(path);

    if (!File.Exists(localPath))
    {
        return;
    }

    // get info about contenttype etc 
    FileInfo fileInfo = new FileInfo(localPath);
    int len = (int)fileInfo.Length;
    context.Response.AppendHeader("content-length",len.ToString());
    context.Response.ContentType = FileHelper.GetMimeType(fileInfo.Name); // returns video/3gpp

    // stream file
    byte[] buffer = new byte[1 << 16]; // 64kb
    int bytesRead = 0;
    using(var file = File.Open(localPath,FileMode.Open))
    {
       while((bytesRead = file.Read(buffer,buffer.Length)) != 0)
       {
            context.Response.OutputStream.Write(buffer,bytesRead);
       }
    }

    // finish
    context.Response.Flush();
    context.Response.Close();
    context.Response.End();

}

解决方法

你得到的不是“技术上”流媒体.这是一个文件下载.您的客户端(浏览器/电话)发送了HTTP请求,您的FileHandler.ashx打开了文件并将字节写入响应流.对于网页请求,这是完全相同的交互,除了数据是html文本而不是表示视频的二进制数据.

如果手机不支持视频,则可能是不兼容的编码.如果您确定该视频可通过手机播放,请查看手机是否需要渐进式下载支持(如iPhone / iPad / iPod Touch要求媒体播放器“流式传输”视频.)如果是这样,您将会需要查看可用于处理字节范围数据请求的许多解决方案中的任何一个,并使用指定范围内的文件中的字节来响应请求.

我写了一个library for ASP.NET MVC来处理这个问题,我的工作主要基于这个guidance and source code完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读