FFmpeg 命令转换为 DivX

FFmpeg 命令转换为 DivX

我正在尝试使用 ffmpeg 将视频转换为 DivX。这是我当前的命令行:

-vtag DIVX -f avi -vcodec msmpeg4 -s 640x480 -b 345k -acodec libmp3lame -ab 256 -ac 2 -ar 48000

问题是,我想要的是高质量文件,但得到的却是低质量的 DivX 文件。有人能告诉我一个更好的命令来获得更高质量的文件吗?msmpeg4 是最新的 DivX 编解码器吗?

答案1

要么使用更高的比特率和/或使用两遍编码,要么使用-qscale可变比特率模式来定位质量级别,而不是特定的比特率。请参阅这篇博文以获得更深入的信息。

量表

qscale 的范围mpeg4是 1–31,其中越低=质量越好/文件大小越大,3–6 通常可以被认为是一个有用的范围。这将以给定的质量为目标,比特率可变。您可以类似地将 qscale 与 libmp3lame 一起使用,其中范围是 0–9,数字越低,质量越好。请参阅这里了解更多信息;任何高达 6 的值都可以获得良好的质量。

最新语法:

ffmpeg -i input.file -c:v mpeg4 -q:v 5 -tag:v DIVX -s 640x480 -c:a libmp3lame -q:a 5 -ac 2 -ar 44100 output.avi

旧语法:

ffmpeg -i input.file -vcodec mpeg4 -qscale 5 -vtag DIVX -s 640x480 -acodec libmp3lame -aq 5 -ac 2 -ar 44100 output.avi

两遍编码

请注意,Windows 用户需要使用NUL而不是/dev/null。如果您想要定位特定大小,请使用此选项,否则只需使用 VBR 质量定位-qscale选项。这些示例将把 90 分钟的电影装入 700 MB 的 CD-ROM。

最新语法:

ffmpeg -y -i input.file -c:v mpeg4 -b:v 868k -tag:v DIVX -s 640x480 -an -pass 1 -f rawvideo /dev/null
ffmpeg -i input.file -c:v mpeg4 -b:v 868k -tag:v DIVX -s 640x480 -c:a libmp3lame -b:a 192k -ac 2 -ar 44100 -pass 2 output.avi

旧语法:

ffmpeg -y -i input.file -vcodec mpeg4 -b 868k -vtag DIVX -s 640x480 -an -pass 1 -f rawvideo /dev/null
ffmpeg -i input.file -vcodec mpeg4 -b 868k -vtag DIVX -s 640x480 -acodec libmp3lame -ab 192k -ac 2 -ar 44100 -pass 2 output.avi

请注意,您并不严格需要-ac 2,因为 MP3 仅支持双声道,所以任何环绕声音频都会自动混合。

您应该考虑在 MP4 容器中使用 H.264 视频/AAC 音频;在 AVI 中使用 DivX/MP3 的唯一原因是您需要旧式硬件播放器的支持。与相同比特率的 H.264 编码视频相比,使用 DivX 会导致质量较差。

答案2

您可以尝试为选项指定一个更大的值-b 345k。这将决定输出视频的比特率。也许,您可以尝试-r fps根据需要进行更改。

更改这些值时必须小心。并非所有编解码器都接受所有值。查看 ffmpeg 的帮助/手册以获取更多信息。

答案3

尝试这个:

-vtag DIVX -f avi -vcodec mpeg4 -mbd 1 -bf 2 -s 640x480 -b 900k -acodec libmp3lame -ab 192 -ac 2 -ar 44100

相关内容