如何使用 ffmpeg 快速将 mp4 转换为 webm?

如何使用 ffmpeg 快速将 mp4 转换为 webm?

我必须将 76 个 mp4 文件转换为 webm,以便用于使用 HTML5 视频的网站。我说的是 10 Gb 的 mp4 文件……我知道我可以简单地让 ffmpeg 使用以下命令来执行此操作:

ffmpeg -i input_file.mp4 output_file.webm

当然,我会通过以下方式递归地进行:

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

我甚至尝试了在互联网上找到的一些东西:

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

但问题是,我至少需要一周的时间!!!我做错了什么?有没有可能加快速度?如果我转换为 ogg,速度会加快吗?请帮忙!!!

答案1

将其加倍还是将其减半?所以这是一条死路。我不会玩比特率,我从来不知道对质量或大小有什么期望。我想我会坚持这一点,让客户端坚持到转换结束。

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

我将其发布给未来的用户,实际上我的速度提高了,但我的 CPU 工作得很糟糕:每个核心 60% 到 80%!现在我认为它需要的时间会更少:3 天而不是 6 天或 7 天。我希望它不会崩溃。^_^

无论如何,谢谢你!

编辑:在 LordNeckbeard 和 neon_overload 的评论后删除了开关 -sameq -sameq 并不意味着相同的“质量”

答案2

转码视频需要时间。它还需要更多关于编码参数的知识;ffmpeg 的默认设置可能不适合您,甚至可能无法创建可用的输出文件。

这是一个开始:

使用 ffmpeg 对 webm 进行编码(已存档)

这些设置将编码为特定的平均的比特率(视频比特率为 3900kbit),因此比特率会出现峰值。

MP4 和 WebM 使用不同的视频编解码器,因此没有捷径;必须对视频进行转码。

当然,编码速度会因帧大小、帧速率和质量设置而有很大差异。对于 720p 编码,您可能希望在过去几年的 CPU 上以大约 1:1 的比例编码(即 10 小时的视频在 10 小时内完成)。如果您像链接中给出的示例一样进行两遍 ABR 编码,则速度几乎是这个数字的两倍。

答案3

我用优化视频,它会自动检测具有最佳速度与质量平衡的转换设置根据谷歌

标识

相关内容