3

我在用

视频/mp4

格式并在“video js”中使用,这在 chrome 中运行良好,但在 Firefox 中存在问题。在控制台中出现以下错误:

不支持“video/mp4”的指定“type”属性。媒体资源 # 加载失败。

Chrome、Firefix、IE 和 Safari 等所有主要浏览器是否都支持任何单一的视频编解码器。

提前致谢。

4

2 回答 2

6

MP4是一种容器格式,因此放入其中的编解码器也很重要。

Firefox仅在您有可用的第三方解码器时才MP4支持H.264视频和AAC/或音频。MP3如果您正在寻找一种单一的格式来统治它们,那么您就不走运了,因为目前没有。

您处理此问题的方式是将相同的内容文件转码为多种格式,并在播放器中使用回退机制。

请参阅 Mozilla 上的媒体格式页面,了解支持的内容和位置。例如。WebM使用VP9/ VP8, Vorbis/Opus可在 Firefox 上运行。

通常,回退通过将同一文件的所有不同版本指定为<video>标签的源来工作。浏览器将选择它可以播放的第一个。

来自HTML5 Rocks的示例:

<video controls>
  <source src="devstories.webm" type='video/webm;codecs="vp8, vorbis"'/>
  <source src="devstories.mp4" type='video/mp4;codecs="avc1.42E01E, mp4a.40.2"'/>
</video>

如果浏览器无法播放WebM,它将退回到MP4.

于 2015-11-24T16:51:11.400 回答
3

在我的非详尽测试中,我发现 mp4 容器中带有 aac 音频的 h264 视频(使用 ffmpeg 转码)至少适用于以下浏览器:

  • Android 和 Windows 10 上的 Chrome 80
  • iPadOS 和 iOS 13.4 以及 MacOS 10.15 上的 Safari
  • Windows 10 上的 Internet Explorer 11
  • Android 和 Windows 10 上的 Firefox 74
  • Windows 10 上的 Edge 80

我在 Ubuntu 18.04 上使用以下 ffmpeg 参数对来自数码摄像机的视频文件进行了编码:

ffmpeg -i before.mov -y -loglevel 31 -filter:v fps=fps=30 -movflags +faststart \ 
-f mp4 -vcodec libx264 -vf scale=1280:-1 -acodec aac -b:a 128k \ 
-b :v 1000k -preset faster 'after.mp4'

编辑

我发现,奇怪的是,一个 mp3 音频文件在 Safari/MacOS 中的音频标签中播放。但是带有 mp3 音轨的视频不会播放音频。

于 2020-04-03T11:18:21.653 回答