使用 ffmpeg 压缩、转换和调整视频大小
我的帖子通常是我自己的笔记和参考资料,我在这里发布它们,希望其他人也能觉得有用。
给定一个源视频source.mp4:
为了以合理的宽带比特率(约 1.5Mbps 视频/128kbps 音频)压缩视频以供网络传输:
ffmpeg -i source.mp4 -c:v libx264 -b:v 1.5M -c:a aac -b:a 128k target.mp4
压缩并转换为 WebM 格式:
ffmpeg -i source.mp4 -c:v libvpx-vp9 -b:v 1M -c:a libopus -b:a 128k target.webm
(请注意,VP9 的比特率比 H.264 低 33%——VP9 为 1M,H.264 为 1.5M——这是有意为之;VP9 的编码效率比 H.264 高出约 20-50%。Opus 和 AAC 的效率大致相同。)
为了将高分辨率源视频缩小到更适合网络播放的分辨率(例如,手机网络使用 qHD,宽带网络使用 HD),-filter:v可以使用以下方法:
ffmpeg -i source.mp4 -c:v libvpx-vp9 -b:v 0.33M -c:a libopus -b:a 96k \
-filter:v scale=960x540 target.webm
命令行选项:-c:v指定视频编解码器;-b:v指定视频比特率;-c:a指定音频编解码器;-b:a音频比特率;-filter:v对视频流应用滤镜(在本例中为缩放)。
要将旧版 VP8 编解码器与 WebM 一起使用,请使用libvpx而不是libvpx-vp9。
如果源视频没有音轨,则省略-c:aand-b:a参数。
要明确指定容器格式,请使用-f命令行选项:-f mp4或-f webm。
对于 MP4 容器,使用的视频编解码器是 H.264,音频编解码器是 AAC,几乎得到了所有浏览器的支持。
适用于 Chrome 及相关浏览器。WebM 容器使用 VP8/9 和 Opus。
Chrome 也支持 MP4 (H.264/AAC),所以除非文件大小和/或质量有所改善,否则提供 WebM 格式是没有意义的。
比特率显然可以变化;我使用 0.5M 视频和 96k 音频进行手机通信。
文章来源:https://dev.to/benjaminblack/use-ffmpeg-to-compress-and-convert-videos-458l