Video 让Safari更喜欢HTML5视频标签中的HEVC

Video 让Safari更喜欢HTML5视频标签中的HEVC,video,cross-browser,mp4,hevc,Video,Cross Browser,Mp4,Hevc,我目前正在研究在视频中添加HEVC支持的可行性,但Safari遇到了一个问题。以下是示例来源: <video autobuffer="true" autoloop="" loop="" controls=""> <source src="film_WebM.webm" type="video/webm"> <source src="film_HEVC.mp4" type="video/mp4"> <source src="film

我目前正在研究在视频中添加HEVC支持的可行性,但Safari遇到了一个问题。以下是示例来源:

<video autobuffer="true" autoloop="" loop="" controls="">
    <source src="film_WebM.webm" type="video/webm">
    <source src="film_HEVC.mp4" type="video/mp4">
    <source src="film.mp4" type="video/mp4">
</video>

理想情况下,浏览器应该读取源代码并获取它认为可以读取的第一个文件,这应该允许Firefox和Chromium显示VP9胶片,Safari显示HEVC,Internet Explorer显示H264。然而,Safari的表现并不好,如果有H264,它将忽略HEVC胶片。我尝试过用编解码器信息注释源代码,但这没有帮助。将HEVC设置为视频元素的默认源适用于Safari,但会导致其他浏览器出现问题

在不使用特征检测来操纵
src
元素的情况下,有没有办法解决这个问题

被苹果公司列为野生动物园的臭虫#37821806


下面的讨论表明,尽管苹果自己发布了发行说明,Safari可能会基于硬件考虑决定使用AVC源。它如何在没有编解码器提示或明显的mime类型嗅探的情况下做到这一点尚不清楚。如果人们可以测试并在评论中记录编解码器播放的内容和Mac硬件信息,这将非常有用。

首先确保您的HEVC视频编码正确,以便Safari可以播放。通过移除视频标签中的所有源(指向HEVC视频的源除外)来测试这一点。如果Safari播放,请继续下一步,否则请修复视频文件

确定HEVC视频与Safari兼容后,使用
标记中的
类型
属性向浏览器提示编解码器。到目前为止,您只告诉浏览器,MP4容器用于HEVC和H.264源代码。浏览器必须下载部分文件,以确定哪些文件是兼容的,通常是按照
标记的顺序

您可以/应该指定所使用的所有编解码器的详细信息,包括视频编解码器,如果涉及音频,还可以指定音频编解码器

  • avc1
    代表H.264
  • hvc1
    代表H.265(HEVC)
例如,最短的版本如下:

<video>
    <source src="film_WebM.webm" type="video/webm">
    <source src="film_HEVC.mp4" type='video/mp4; codecs="hvc1"'>
    <source src="film.mp4" type='video/mp4; codecs="avc1"'>
</video>

另见:和

更新 感谢你在评论中的反馈,我想我知道了发生了什么:Safari似乎考虑了你的硬件来选择最好的视频源,这实际上是相当聪明的。H.264的硬件支持广泛可用,即使在较旧的硬件上也是如此,而HEVC/H.265的硬件支持则不然,需要更多的CPU,最终也需要更多的能源(电池)

因此,尽管您的设备(例如MBP)和软件可以解码和播放HEVC视频,但Safari可能更喜欢H.264视频源(如果可用)

我做了更多的测试:

  • iMac 2014年末(5K):✅ HEVC
  • iPhone X(iOS 12测试版):✅ HEVC
  • iPhone 7 Plus(iOS 11):✅ HEVC
  • 旧版iPad Air(iOS 11):⚠️ 首选H.264,但如果没有可用的H.264源,将播放HEVC视频

是的,只要AVC不在源代码列表中,HEVC就可以在Safari中正常工作。添加编解码器提示没有任何帮助,这表明这是Safari中的一个bug。使用上述方法,在Safari 11.1.2+High Sierra版本中,它对我很好。我在这里看到了Safari 11.1.2,当我检查电影播放的实际URL时,它不起作用。只有删除h264源代码,Safari才能播放HEVC电影。我在上面添加了一个代码笔演示链接。你能在Safari中看到HEVC的视频吗?我可以。谢谢你的链接,但我的机器无法正常工作。功能检测也带来了负面影响,但Safari会很高兴地播放HEVC文件:。将编解码器检测更改为
codecs=hevc
可能会带来一个错误。