问题描述
我想使用 ffmpeg 将 mp4 视频文件转换为 avi 但质量相同,即使它占用更多空间。如果我只是这样做:
ffmpeg -i file.mp4 file.mp4.avi
生成的 avi 文件非常 low-quality 和像素化。如何在保持视频和音频质量的同时进行这种转换?
最佳答案
每当您从一个编解码器转码到另一个编解码器(视频或音频)时,您总是会损失一点质量,但如果您只想从 MP4 容器类型更改为 AVI 容器,也许可以避免这种情况。如果您没有理由转码,codec:copy
可能会有所帮助(它应该更快)。
如果您必须转码,因为您需要使用特定的视频编解码器,我希望您可以使用上面 zetah 在他的评论中的建议并使用 -sameq
开关。或者,您可能希望使用 qscale
选项手动设置质量。数字越小质量越好,但文件占用的空间也越大。
上次我对视频进行转码时,我使用了 qscale=8.0
,但我建议您尝试找到与输入质量相匹配的最佳值。
Marty Jay 很有帮助地提到,sameq 意味着与输入中的量化器相同,这可能不会产生相同的质量。他引用的文章提到使用 multi-pass 转换,这是在不牺牲质量的情况下实现更好压缩的好方法。
次佳答案
我的解决方案:
ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi
享受!!
第三种答案
这是我不时使用的 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