使用 ffmpeg 将 mp4 转换为相同高质量的 avi 文件?

使用 ffmpeg 将 mp4 转换为相同高质量的 avi 文件?

我想使用 ffmpeg 将 mp4 视频文件转换为 avi,但质量相同,即使占用更多空间。如果我简单地这样做:

ffmpeg -i file.mp4 file.mp4.avi

生成的 avi 文件质量很差,像素化严重。如何在保持视频和音频质量的同时进行转换?

答案1

我的解决方案:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

享受!!

答案2

当您从一种编解码器转码为另一种编解码器(视频或音频)时,总会损失一点质量,但如果您只想从 MP4 容器类型更改为 AVI 容器,也许可以避免这种情况。codec:copy如果您没有转码的理由(并且它应该更快),这可能会有所帮助。

如果您必须转码,因为您需要使用特定的视频编解码器,我希望您可以采用 zetah 在他的评论中的建议并使用开关-sameq。或者,您可能希望使用该qscale选项手动设置质量。数字越低,质量越好,但文件占用的空间越大。

上次我转码视频时使用了qscale=8.0,但我建议您进行实验以找到最适合您的输入质量的方法。

Marty Jay 有帮助地提到,sameq 表示与输入相同的量化器,这可能不会产生相同的质量。他引用的文章提到使用多通道转换,这是一种在不牺牲质量的情况下实现更好压缩的好方法。

答案3

这是我时不时使用的 2-pass(高级简单配置文件)。

第 1 遍:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

第 2 遍:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi

相关内容