我接收的视频流编解码器为H.265 HEVC的mp4视频。较新的iOS设备以这种格式记录,现在只有Safari和移动Safari可以播放它,但是,即使在美国泡沫破灭的时候,世界上大多数地区也没有Apple设备。因此,我将这些视频重新编码为(现在)广为接受的H.264,以便可以将它们用于Firefox,Chrome和其他非Apple浏览器。
但是,既然我已经拥有比H.264更好的压缩/质量的HEVC版本,我希望将其与H.264一起提供,以便查看器设备可以选择要选择的版本。有点像srcset
的img
。
好消息是有办法做到这一点:代替
<video controls src="h264.mp4"></video>
我可以拥有
<video controls>
<source src="h264.mp4" type="video/mp4; codecs=avc1">
<source src="hevc.mp4" type="video/mp4; codecs=hevc">
</video>
坏消息是,它可与Linux Chromium稳定版和beta,Windows Chromium,Edge一起使用。但是Firefox在Linux和Windows上都可以运行。我怎样才能解决这个问题?我必须包含编解码器信息,因为两个文件都是mp4。
[通过反复试验,我发现,如果我不仅指定avc1
,而且还使用特定的6位十六进制代码完全指定配置文件和级别,则Firefox接受编解码器字符串,例如:
type="video/mp4; codecs=avc1.64001E"
这是另一个人如何看到十六进制代码的问题,有关详细信息,请参见How can I (or is it possible to) convert the AVC codec profile and level to the MIME codec definition?和https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#AVC_profiles