【问题标题】:Get Safari to prefer HEVC in HTML 5 video tag让 Safari 更喜欢 HTML 5 视频标签中的 HEVC
【发布时间】:2018-07-31 19:23:26
【问题描述】:

我目前正在研究向视频添加 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 元素的情况下解决这个问题?

作为 Safari 错误 #37821806 向 Apple 提交

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

【问题讨论】:

    标签: video cross-browser mp4 hevc


    【解决方案1】:

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

    确定 HEVC 视频与 Safari 兼容后,使用 source 标签中的 type 属性向浏览器提示有关编解码器的信息。到目前为止,您只是告诉浏览器一个 MP4 容器同时用于 HEVC 和 H.264 源。浏览器必须下载部分文件才能确定哪些文件是兼容的,通常按照source标签的顺序。

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

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

    另见:Demo on CodePen

    更新

    感谢您在 cmets 中的反馈,我想我弄清楚了发生了什么: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 中的一个错误。
    • 使用上述方法在 Safari 11.1.2 + High Sierra 中对我来说效果很好。
    • 我这里有 Safari 11.1.2,当我检查正在播放的电影的实际 URL 时,它不起作用。只有当我删除 h264 源时,Safari 才会播放 HEVC 电影。
    • 我在上面的 CodePen 演示链接中添加了一个链接。你能在 Safari 中看到 HEVC 视频吗?我可以。
    • 我使用空缓存进行了测试。真的需要 Apple 澄清一下,否则我们只是在猜测。
    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多