HTML5视频格式最佳实践

3

我正在开发一个内容管理系统(CMS),希望添加上传视频的功能,但对于“最佳实践”存在一些困惑。这些视频将使用Video.js库进行播放。

我的理解是HTML5视频有三种可能的格式:MP4、OGG和WEBM。看起来所有浏览器都支持MP4,而其他两个格式的支持较少。

  • 如果我想允许用户上传任何类型的视频,那么我是否需要将他们上传的视频转换为符合HTML5格式的视频?或者是否有其他方法可以解决这个问题?
  • 如果MP4基本上被所有浏览器支持,那么包含其他两种格式的意义在哪里?如果我在用户上传后转换视频,是否应该将视频转换为所有三种版本?
  • 我假设当你上传视频到YouTube时,他们会将视频转换成正确的格式?还是还有其他方式使他们能够播放任何视频格式?
  • 是否有可用于快速转换上传的视频的库或技术?

您可以使用 ffmpeg 在服务器上将媒体转换为不同的格式,并在 html 中使用 <source> 元素作为 <video> 的子节点,以播放浏览器支持的不同媒体。 - guest271314
是的,我正在查看 https://github.com/AydinAdn/MediaToolkit 来转换视频 - 但是我应该将视频转换为所有三种格式,还是仅使用MP4就足够了? - William
请参见<source> - guest271314
如果说MP4基本上被所有地方支持,那是不正确的。我不知道有多少UA不想支付版税,但至少我可以说Chromium不支持MP4。 - Kaiido
@William,你最终实现了什么? - geoboy
嗨@geoboy - 我安装了Hangfire.io - 当用户上传视频时,它会创建一个后台任务,使用MediaToolkit (https://github.com/AydinAdn/MediaToolkit)将上传的文件转换为MP4、OGG和WEBM格式。我正在使用Video.js作为媒体播放器,直到所有三个版本都被转换完成,占位符图像将显示在实际视频播放器的位置。一旦转换完成,Video.js将呈现对三个源文件的引用。 - William
1个回答

8
MP4(详细的H.264压缩和MP4容器)的许可/权利由私人公司MPEG LA持有。这就是为什么一些浏览器希望避免依赖它的原因。尽管浏览器不太可能放弃现有的支持,但许可问题阻止了开发人员认为浏览器对MP4 / h.264的支持将永远持续。

谷歌已经宣布将在2011年从Chromium项目中删除h.264支持, 但Chrome仍然支持它。

谷歌的VP8和VP9(以及WEBM容器)具有自由和开放的许可证。但由于竞争,并非所有其他浏览器都愿意支持VP8-9 / WEBM。这可能会随着时间的推移而改变/改善。例如,虽然没有任何一个Internet Explorer版本支持WEBM,Edge却支持。显然,在主要浏览器中,只有Apply Safari缺乏WEBM支持。

MPEG LA同时宣布他们不会收取互联网上使用其格式的费用, 但实际上这并不能使h.264/MP4格式变得完全免费。

因此,这使提供视频内容的网站需要仔细考虑其浏览器/格式支持。我认为,即使将来MP4内容有可能被清除,每个视频都应该创建至少一个MP4和WEBM副本。

上传后进行转换几乎是必须的。视频编码器和封装器具有大量不同的参数,如果接受上传的视频,您可能会遇到一些混乱情况。

Youtube重新编码了这些视频,有一些证据表明他们至少使用ffmpeg来执行其中的一些任务。


谢谢!这正是我需要的信息类型 - 我会确保每个上传文件至少包含MP4和WEBM格式的副本,以便在HTML视频中使用。 - William
不用谢。我做了一些语法上的修改,并在没有改变其核心含义的情况下,增加了一些细节,使它更具帮助性,以便让每个人都能受益。 - Bulent Vural
@BulentVural HLS怎么样?对于支持它的浏览器来说,这是个更好的选择吗?据我所知,它将允许浏览器流式传输文件,而不是下载整个文件? - geoboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接