【问题标题】:Streaming m3u8 with video.js使用 video.js 流式传输 m3u8
【发布时间】:2014-06-14 12:57:53
【问题描述】:

我正在尝试流式传输此网址:http://stream331.overseebrasil.com.br/live_previd_155/definst/live_previd_155/playlist.m3u8

<audio id="streaming" class="video-js vjs-default-skin" controls>
  <source src="http://stream331.overseebrasil.com.br/live_previd_155/_definst_/live_previd_155/playlist.m3u8" type='audio/mp4; codecs=mp4a.40.2' />
</audio>

Safari / Mac 和 Safari / iOS 工作正常,但代码无法在 Chrome 和 Firefox 中运行。

我尝试从 type 属性中删除编解码器的信息,但没有任何反应。 火狐说:

Specified "type" attribute of "audio/mp4; codecs=mp4a.40.2" is not supported. Load of media resource http://stream331.overseebrasil.com.br/live_previd_155/_definst_/live_previd_155/playlist.m3u8 failed. 
All candidate resources failed to load. Media load paused.

我还尝试根据 mime 页面更改类型属性 (http://www.videojs.com/projects/mimes.html) 对这个问题有任何想法吗?

【问题讨论】:

    标签: html streaming video.js


    【解决方案1】:

    跨浏览器 HLS 支持正在一个单独的插件中工作,contrib-hls。它可以在 Safari 中运行,因为浏览器本身支持 HLS 播放,但其他都没有,因为 Video.js 后备不支持。

    试用该插件非常简单,但如果您使用的是 CDN 版本的 Video.js,则需要在某处上传 contrib-hls 包含。

    <script src="/path/to/video.js"></script>
    <script src="/path/to/videojs-hls.min.js"></script>
    <script>
      var player = videojs('video');
      player.hls('http://example.com/video.m3u8');
    </script>
    

    然后你就可以像往常一样对待玩家了,player.play()

    【讨论】:

    • 请求的资源上没有“Access-Control-Allow-Origin”标头>>如何使用此插件从另一个域加载源而不出现此错误?
    • 由于 m3u8 是通过 XHR 检索的,因此其他域只需包含 CORS 标头。
    • video gular 提供了一种绕过cors 问题的方法。但我不明白。请有人解释一下?
    • 坦率地说,除非他们使用 Flash,否则他们不会。这不是“CORS 问题”,而是浏览器的安全功能,因此如果他们通过 XHR (JS) 检索内容,它们会受到同样的限制。
    • video.js 是否覆盖 - 请求的资源上不存在“Access-Control-Allow-Origin”标头...错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2015-06-03
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多