【问题标题】:Is it possible to stream a html5 video?是否可以流式传输 html5 视频?
【发布时间】:2013-01-26 21:25:47
【问题描述】:

我有一个显示视频的网站。它似乎适用于 HTML5 视频标签引用的 5 分钟“webm”和“mp4”视频。但如果我使用长视频,我担心网站会不堪重负。该网站使用 ASP.net,我确实找到了一篇关于使用 asp.net 渐进式下载大文件的文章。但是,我不知道获取小文件包是否会干扰用户进行“搜索”(例如,将控制栏位置拖动到他感兴趣的点)。我也不知道它是否会流式传输不需要流式传输的页面。
有什么办法可以解决一次通过 Internet 发送的视频数据过多,导致我的服务器或用户的 PC 不堪重负的问题?

【问题讨论】:

    标签: asp.net html video-streaming html5-video


    【解决方案1】:

    这应该对你有帮助:Streaming MP4 video through .NET HTML5

    搜索和缓冲由播放器自己处理,是的,当您搜索视频中的新点时,它会自动请求视频的这些部分。

    【讨论】:

      【解决方案2】:

      没有办法对 HTML5 视频进行自适应流式传输,但您不必担心在长视频中寻找。现代网络服务器允许浏览器请求文件的块,因此如果用户正在观看一个很长的视频并直接跳到中间,浏览器将从头开始停止下载并从他们跳过的位置开始检索视频文件。这与早期的 Flash 视频形成对比,当时您必须等待视频文件的整个开头按顺序下载才能到达要观看的中间部分。

      不过,您可以采取一些措施来节省带宽并让您的服务器满意。

      首先,如果用户已开始观看视频并已观看完毕,您可以确保浏览器不会继续下载该大文件的其余部分。例如,如果您在单个页面上切换多个视频,或者如果您使用 Ember.js 或 Backbone 之类的框架在多个“页面”中导航而实际上没有将浏览器指向新 URL,则可能会发生这种情况。

      如果您暂停视频并将其从 DOM 中删除,则浏览器可能仍在下载它。但是你可以用这样的代码来阻止它:

      video.src = "";
      video.load();
      

      另外,考虑将您的视频文件存储在CDN 上。这样,运行 ASP 脚本、与数据库通信和处理其他相关逻辑的服务器也不负责提供这些大文件。还有other benefits,例如拥有独立且更高效的标头,以及在地理上更靠近用户的多个位置拥有服务器。

      【讨论】:

        【解决方案3】:

        HTML5 引入了MediaStream API,用于捕获和流式传输视频和音频数据,主要用于访问本地媒体设备,例如一个网络摄像头。但是使用与 XHR 连接的 MediaStream 对象,您应该能够在没有其他插件的情况下提供视频流。浏览器支持目前尚未普及,并且在非最新版本的 Firefox 和 Chromium 中,您必须通过某种设置启用它(例如 Chromium 中的 about:flags)。

        我不知道从服务器流式传输视频的任何有效实现,我最近只是在玩网络摄像头数据。我认为这是可能的(有时甚至有广泛的浏览器支持;-)。请注意,HTML5 包含许多不同的 API,其中大部分您通常会通过 JS 使用。

        另见:http://www.html5rocks.com/en/tutorials/webrtc/basics/?redirect_from_locale=de#toc-mediastream

        【讨论】: