要支持多种浏览器,您需要使用 FFmpeg 来转换 .mov
MP4 容器和 WebM 容器。在
实际做法是,您可能会同时指定编解码器。目前,
现在我们允许 FFmpeg 使用其默认设置
如果您对这些概念还不熟悉,请先阅读 媒体文件基础知识 然后再继续学习其他部分此外,如果你没有安装 FFmpeg 媒体应用基础知识 以便使用 Docker 进行设置
我们使用的是建议安装的 Docker
针对网络准备媒体文件中的 glocken.mov 文件
添加到 media
目录内。我们之前将 FFmpeg 版本 4.3.2 用于
命令说明。
容器
首先,我们需要使用 .mp4
从 .mov
文件创建两个容器
和 .webm
文件扩展名,且该文件内同时包含音频和视频流。
参阅媒体文件基础知识
如果您不知道容器和数据流之间的区别
。
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
WebM 的制作时间比 MP4 长。这一点也就不足为奇
结果。而 MP4 则会压缩到原始文件的 83%
左右
WebM 的大小可缩减至原始大小的 78%
,但也可以小得多。
结果会有所不同。请务必注意,FFmpeg 4.2.2
并将默认视频比特率设为 200k
;在 4.3.2
中,系统不会设置默认比特率。
因此,该视频不再仅仅是原始视频的 4%
。你可以亲自查看
在媒体文件所在的文件夹中使用 ls -a
bash 命令。
例如:
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 9503301 Mar 7 18:30 glocken.webm
要获取小文件,您需要执行以下操作:
/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame= 300 fps=3.6 q=0.0 Lsize= 483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 494497 Mar 7 18:45 glocken.webm
检查您的工作
要验证结果,请使用 FFmpeg 和 Shaka Packager,如 媒体应用基础知识:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
编解码器
接下来是编解码器。如媒体文件基础知识中所述,编解码器
与容器(文件类型)不同。同一容器的两个文件
可以存储使用不同的编解码器压缩的数据。WebM 格式示例
允许使用 Vorbis 或 Opus 对音频进行编码。要更改编解码器,
请使用 FFmpeg。例如,以下命令会输出包含 vorbis
音频的 .mkv
文件
编解码器和 av1
视频编解码器。
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
在此示例中,-c:a
标志和 -c:v
用于指定音频和
分别是视频编解码器
媒体转化页面会列出 转换编解码器所需的命令。下表总结了所使用的库 以便对 WebM 和 MP4 文件执行编解码器转换。这些是 分别针对 DASH 和 HLS 推荐的格式。
视频
编解码器 | 扩展程序 | 库 |
---|---|---|
av1 | WebM、mkv | libaom-av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
音频
编解码器 | 扩展程序 | 库 |
---|---|---|
aac | MP4 | aac |
Opus | WebM | libopus |
Vorbis | WebM | libvorbis |
接下来,我们将介绍如何更改新创建的文件的比特率。