当前位置: 首页 > 知识库问答 >
问题:

HTML视频:有没有可能因为Safari上缺少DASH/Webm-VP9支持而求助于HLS,或者我如何在DASH上同时支持Webm和H264?

严昊昊
2023-03-14

我试图从一个Web服务器上提供一些视频内容,目的是支持一组相当广泛的浏览器。

iOS,据我所知,要走的路是使用HLS(HTTP Live Streaming),而在桌面(我猜是Android?)MPEG-DASH是最先进的。作为后备,我可以提供一些静态视频。

我已经用HLS和Chrome、Firefox、Opera和Edge在桌面上iOS了这个,但是当我按下play时,Mac上的Safari只是显示一个活动微调器。据我所知,这是因为Safari尝试使用DASH作为回放方法,但失败了,尽管缺乏Webm支持并且HLS被列在第一位。

对于MPEG-DASH,我将Webm与VP9和Opus以及我的

<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>

我只是用

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

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

有没有一种方法我可以:

  • 告诉DASH尊重源的顺序,不要跳到HLS流的前面
  • 或者,如果视频/webm,则不启动;codecs=vp9,opus不受浏览器支持

最后,如果这两个都不可能,我能用DASH同时支持多个不同的编解码器吗?i、 e.我是否可以同时提供VP9和H264 DASH流,并让它在支持的情况下选择VP9而不是H264,否则返回H264(更高的比特率或更低的质量)?我该如何生成这些流数据?


共有1个答案

贡正诚
2023-03-14

根据您分享的内容,当您的浏览器遇到带有“data-dashjs-player”属性的视频标签时,它将使用dashjs播放器,并且DASH播放器将专注于它支持的不包括HLS的格式。

作为一个粗略的解决方案,您可以检查浏览器是否可以播放HLS,如果可以,则使用本机视频标签,如果不能,则使用DASH播放器。检查HLS播放有点未定义,但目前以下方法似乎有效:

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

这应该会在可以播放HLS的浏览器上返回“可能”(目前只有Safari AFAIK),如果不能,则不会返回任何结果——我刚刚在Safari和Chrome上测试了它,它的行为似乎是这样的。

值得一提的是,这是一次冲刺。js应该能够在safari上播放MPEG DASH文件,因此有必要查看控制台或日志,以找出为什么它不能播放DASH视频。

 类似资料:
  • 我目前正在发送一个视频流到Chrome,通过MediaSource API播放。 有什么方法可以实时地用FFMPEG编码成MPEG-DASH或关键帧WebM格式吗? 编辑: 我只是用尝试了一下,这样每个帧都是一个关键帧。不是理想的解决方案。不过,它现在确实适用于纵隔。在WebM中,有什么方法可以将段与关键帧同步,这样就不需要每个帧都是关键帧了? MediaSource API和mp4

  • 下面是一个使用mediaSource API和MPEG DASH标准播放视频的演示。webm视频。这是使用的MPD文件: 有人知道如何获取/计算任何视频的“SegmentBase indexRange”和“Initialization range”数字吗?

  • 我正在做一个小的研究项目,在印度非常低带宽的移动连接上测试DASH流媒体。 我有一台AWS机器,可以上传视频并打包成MPEG-DASH和HLS流媒体,并创建MPD和m3u8文件。 但我无法提供视频。 我尝试过Apache和node。js。有人告诉我,只要把包含mpd nad m3u8文件的文件夹和视频块放在一起,我就可以播放视频了。 我不确定我做错了什么。我需要做什么特殊配置才能为MPEG-DAS

  • 我想知道这是可能的隐藏或加密视频块的url或我可以保护文件以任何其他方式从下载?

  • 问题内容: 我们的Java程序之一在启动时仅监听IPv6(8080) 例如 问题是无法从外部访问(本地主机除外),要解决此问题,我需要手动添加 但这使得该程序仅适用于IPv4网络。 是否可以执行上述类似 sshd的 操作,并且都支持IPv4和IPv6? 问题答案: 我怀疑这不是Java编程问题,而是OS网络堆栈/ OS网络配置问题: http://coding.derkeiler.com/Arch

  • 我们的一个Java程序启动时,它只监听IPv6(8080) 例如。 问题是它不能从外部访问(除了localhost之外),为了解决这个问题,我手动添加了这个 是否可以像上面的sshd一样,同时支持IPv4和IPv6?