HTML视频:是否可以在Safari上缺少DASH / Webm-VP9支持而退回到HLS,或者如何在DASH上同时支持Webm和H264?

时间:2019-06-18 13:26:22

标签: safari html5-video http-live-streaming mpeg-dash

我正在尝试从网络服务器提供一些视频内容,以支持相当广泛的浏览器。

就iOS而言,据我所知,使用HLS(HTTP实时流传输)是可行的,而在台式机上(我猜是Android吗?),MPEG-DASH是最新技术。作为备用,我可以提供一些静态视频。

我已经在iOS上使用HLS和Chrome,Firefox,Opera和Edge在台式机上运行此功能,但是在Mac上,当我按Play键时,Safari只是显示了一个活动微调器。据我所知,这是因为Safari尝试并没有使用DASH作为回放方法,尽管缺少Webm支持并且HLS排名第一。

对于MPEG-DASH,我将Webm与VP9和Opus结合使用,并且我的<video>标签看起来像这样:

<video controls style="display:inline-block;max-width:174.22vh;max-height:98vh;width:98vw;height:55.125vw;background-color:#ccc;" preload="auto" poster="my-preview-image.jpg" data-dashjs-player>
    <source src="myvideo/hls/playlist.m3u8" type="application/x-mpegURL">
    <source src="myvideo/dash/manifest.mpd" type="application/dash+xml">
    <source src="myvideo/myvideo-vp9.webm" type="video/webm; codecs=vp9,opus">
    <source src="myvideo/myvideo-vp8.webm" type="video/webm; codecs=vp8,vorbis">
    <source src="myvideo/myvideo-h264.m4v" type="video/mp4; codecs=h264,aac">
</video>

我只是使用导入导入DASH参考

<script src="dash.all.min.js"></script>

我正在使用ffmpeg从Final Cut Pro导出的高质量主视频中生成HLS和DASH流。静态Webm后备文件也使用ffmpeg生成,而H264静态后备文件是从Final Cut Pro导出的较低比特率。

有什么办法可以做到:

  • 告诉DASH尊重消息源的顺序,不要跳到HLS流的前面
  • 或者,如果浏览器不支持video/webm; codecs=vp9,opus,则不要加入。

最后,如果两者都不可行,我是否可以同时使用DASH支持多个不同的编解码器?即我是否可以同时提供VP9和H264 DASH流,并让其在支持的H264之上选择VP9,否则回落到H264(更高的比特率或更低的质量)?我将如何生成该流数据?

1 个答案:

答案 0 :(得分:1)

从您共享的内容来看,当浏览器遇到带有“ data-dashjs-player”属性的视频标签时,它将使用dashjs播放器,而DASH播放器将着重于其支持的不包含HLS的格式。 / p>

作为粗略的解决方案,您可以检查浏览器是否可以播放HLS并使用本机视频标签(如果可以)以及DASH播放器是否可以。检查HLS播放是否有点不确定,但是下面的方法目前看来可行:

 document.createElement('video').canPlayType('application/vnd.apple.mpegURL')

这应该会在可以播放HLS的浏览器上返回“也许”(此时仅显示Safari,而AFAIK则不能显示),否则无法显示任何内容-我刚刚在Safari和Chrome上对其进行了测试,并且看起来像这样。

值得注意的是,dash.js应该能够在野生动物园中播放MPEG DASH文件,因此值得在控制台或日志中尝试查找为什么它不会播放DASH视频的原因。