我正在尝试从网络服务器提供一些视频内容,以支持相当广泛的浏览器。
就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导出的较低比特率。
有什么办法可以做到:
video/webm; codecs=vp9,opus
,则不要加入。最后,如果两者都不可行,我是否可以同时使用DASH支持多个不同的编解码器?即我是否可以同时提供VP9和H264 DASH流,并让其在支持的H264之上选择VP9,否则回落到H264(更高的比特率或更低的质量)?我将如何生成该流数据?
答案 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视频的原因。