我正在尝试使用以下命令通过 ffmpeg 将一些文件转换为 webm:
# First pass
ffmpeg -i input.mp4 -codec:v libvpx -quality best -b:v 225k -qmin 10 -qmax 42 -maxrate 300k -bufsize 1000k -threads 8 -vf -an -pass 1 -f webm /dev/null
# Second pass
ffmpeg -i input.mp4 -codec:v libvpx -quality best -b:v 225k -qmin 10 -qmax 42 -maxrate 300k -bufsize 1000k -threads 8 -vf -codec:a libvorbis -b:a 128k -pass 2 -f webm output.webm
但我收到了这个错误信息:
[NULL @ 0x55c5d4360220] Unable to find a suitable output format for 'libvorbis'
libvorbis: Invalid argument
我已经安装了 libvorbis0a、libvorbisenc2 和 libvorbisfile3,因此我在存储库中搜索但找不到任何 libvorbis 包(只有一个 libvorbis-dev,我猜是用于编译它的?)
所以我真的需要编译它还是我做错了什么?(我在 Ubuntu 16.10 上)
答案1
每个命令中都有-vf
(视频过滤器) 选项,但您没有为其提供任何过滤器名称。请添加过滤器或-vf
从每个命令中删除错误的过滤器。
答案2
以下是对我而言有效的方法:
通道1:
ffmpeg -i input.mp4 -an -c:v libvpx -quality best -b:v 225k -qmin 10 -qmax 42 -maxrate 300k -bufsize 1000k -threads 4 -pass 1 -f webm /dev/null
步骤2:
ffmpeg -i input.mp4 -c:v libvpx -quality best -b:v 225k -qmin 10 -qmax 42 -maxrate 300k -bufsize 1000k -threads 4 -c:a libvorbis -b:a 128k -pass 2 -f webm output.webm
注意:我将线程数改为 4,因为我没有 8 个。将其改回适合您的系统应该没有问题。我还将长手写 '-codec: ' 改为较短的-c:
变体(习惯使然),并将 -an(无音频开关)移至第 1 遍的前面(我不确定在这种情况下是否需要它,但它不会造成任何损害)。当然,我删除了 @LordNeckbeard 提到的虚假的 -vf(视频过滤器)开关,它导致了您在第 2 遍中收到的错误以及在第一次传递到 /dev/null“在命令行上发现尾随选项。”的看不见的错误。