我必须将 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 的默认设置可能不适合您,甚至可能无法创建可用的输出文件。
这是一个开始:
这些设置将编码为特定的平均的比特率(视频比特率为 3900kbit),因此比特率会出现峰值。
MP4 和 WebM 使用不同的视频编解码器,因此没有捷径;必须对视频进行转码。
当然,编码速度会因帧大小、帧速率和质量设置而有很大差异。对于 720p 编码,您可能希望在过去几年的 CPU 上以大约 1:1 的比例编码(即 10 小时的视频在 10 小时内完成)。如果您像链接中给出的示例一样进行两遍 ABR 编码,则速度几乎是这个数字的两倍。