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


28

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

ffmpeg -i file.mp4 file.mp4.avi

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


3
您可以使用-sameqswitch,它将相同的视频编解码器(假设为H264)放入AVI容器中。如果您的播放器不支持AVI中的H264,那么您需要将可能的最佳视频格式(H264)转码为一些普通的格式,这是不好的。然后,您分配更高的视频比特率XVID(假设为2000 Kb / s)。音频对IMHO没什么影响,但最好转换为MP3,然后转换为AC3
zetah 2011年

Answers:


16

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

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

我上次使用视频对代码进行转码时qscale=8.0,但是我建议您尝试寻找与输入质量相匹配的最佳视频。

马蒂·杰伊(Marty Jay)有益地提到,sameq表示与输入中相同的量化器,这可能导致质量不相同。他引用的文章提到使用多遍转换,这是在不牺牲质量的情况下实现更好压缩的好方法。


感谢您的提示,我将尝试-sameq看看如何进行。
719016 2012年

8
-sameq并不意味着相同的质量;ffmpeg.org/trac/ffmpeg/wiki/...

3
似乎建议使用该-qscale 0选项
user989762 2015年

年龄相当大,但是我今天尝试这样做时收到此警告:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg

10

我的解决方案:

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

请享用!!


2
请注意,将AVC流嵌入到AVI容器中需要一种由许多社区驱动的视频播放器(例如VLC,MPlayer,任何FFmpeg / Libav或GStreamer,Media Player Classic)支持的hack,但不受许多商业播放器(例如Windows Media Player)支持和QuickTime / iTunes不支持)。
David Foerster

4

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

通过:

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

太好了,为我制作了质量非常好的小型AVI!
jpo38
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.