使用ffmpeg从mp4转换为avi时如何获得最佳质量?


11

当我使用它时,质量看起来还不错。

ffmpeg -same_quant -i video.mp4 video.avi

ffmpeg文档中写道:“请注意,这不是同样的质量。除非您知道需要此选项,否则请不要使用此选项。”

是我获得-same_quant了最好的质量,还是有一个选项可以提供与输入相同的质量,并且更推荐使用?


根据所使用的编解码器(某些编解码器与某些容器不兼容),您始终可以简单地复制流(-codec copy)。这是避免质量变化的最佳方法,因为您无需重新编码流,只需将流重新包装在另一个容器中即可。
njsg 2012年

当我尝试这个时,我得到:Unknown decoder 'copy'
sid_com 2012年

3
看来-codec copy必须去 -i video.mp4 -你可以尝试ffmpeg -i video.mp4 -codec copy video.avi?(-same_quant在这里也可以使用,但是什么也不做,因为这只会复制流)
njsg 2012年

关于ffmpeg命令行选项的放置,请参阅ffmpeg文档-2说明:以下摘录:通常,选项将应用于 下一个 指定文件。因此,秩序很重要,...
Peter.O 2012年

谢谢!现在,-codec copy在正确的位置进行工作。
sid_com 2012年

Answers:


14

(改编自以上评论)

根据所使用的编解码器(某些编解码器与某些容器不兼容),您始终可以简单地复制流(-codec copy)。这是避免质量变化的最佳方法,因为您无需重新编码流,只需将流重新包装在另一个容器中即可。

处理音频/视频文件时,请务必记住容器大多独立于所使用的编解码器。人们通常将文件称为“ AVI视频”或“ MP4视频”,但是这些都是容器,除了技术上的局限性(例如,AVI可能与h264和Ogg Vorbis有关),您可以使用任何编解码器。

-same_quant似乎是一种告诉ffmpeg尝试达到类似质量的方法,但是一旦对视频重新编码(至少使用有损编解码器),就无法获得相同的质量。如果您担心质量,一个好的经验法则是避免在可能的情况下重新编码流。

因此,为了使用ffmpeg复制流,您需要执行以下操作:

ffmpeg -i video.mp4 -codec copy video.avi

正如@ Peter.O所提到的,选项顺序很重要,因此-codec copy必须执行此操作。您仍然可以保留-same_quant,但是不会对流进行重新编码,因此没有任何效果。)


您的解决方案对我有用。我看到avconv现在推荐使用它ffmpeg,实际上是我使用的。
Faheem Mitha 2013年

3

在FreeBSD 8、2下,我尝试了-codec复制,但是我也得到了未知消息解码。经过反复试验,我发现在FreeBSD下工作的是:

ffmpeg -i video.mp4 -vcodec copy video.avi
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.