use ffmpeg to transform mp4 to same high-quality avi file?

136,486

Solution 1

You always lose a little quality whenever you transcode from one codec to another, video or audio, but perhaps you can avoid it if you only want to change from MP4 container type to an AVI container. codec:copy may be helpful if you don't have a reason to transcode (and it should be faster).

If you must transcode because you need to use a particular video codec I hope you can use zetah's suggestion above in his comment and use the -sameq switch. Alternatively, you may want to use the qscale option to set the quality manually. The lower the number the better the quality, but the more space your file will take.

The last time I transcoded video I used qscale=8.0, but I'd suggest that you experiment to find the optimum to match the quality of your input.

Marty Jay helpfully mentions that sameq means same quantizer as in the input, which may not result in the same quality. The article he quotes mentions using multi-pass conversion, which is a good way to achieve better compression without sacrificing quality.

Solution 2

My solution:

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

Enjoy!!

Solution 3

Here is my 2-pass (Advanced Simple Profile) I use now and then.

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

pass 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
Share:
136,486

Related videos on Youtube

719016
Author by

719016

Updated on September 18, 2022

Comments

  • 719016
    719016 almost 2 years

    I would like to use ffmpeg to transform an mp4 video file into avi but with the same quality, even if it takes up more space. If I simply do:

    ffmpeg -i file.mp4 file.mp4.avi
    

    The resulting avi file is very low-quality and pixelated. How can I do this transformation while keeping the video and audio quality?

  • 719016
    719016 about 12 years
    Thanks for the tips, I'll try -sameq see how it goes.
  • user989762
    user989762 over 9 years
    It seems to be recommended to use the -qscale 0 option
  • David Foerster
    David Foerster over 7 years
    Be aware that embedding AVC streams in AVI containers requires a hack that is supported by many community-driven video players (e. g. VLC, MPlayer, anything FFmpeg/Libav or GStreamer, Media Player Classic) but not by many commercial players (e. g. Windows Media Player and QuickTime/iTunes don't support it).
  • Dave Lugg
    Dave Lugg about 6 years
    Fairly old, but I got this warning trying to do this today: 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.
  • jpo38
    jpo38 about 5 years
    That's great, produced me a very small avi with very good quality!
  • mLstudent33
    mLstudent33 over 4 years
    what's 2 passes for?
  • mLstudent33
    mLstudent33 over 4 years
    This requires additional codecs
  • 16851556
    16851556 over 3 years
    Does it mean that doing that command i am reducing chances of playing that file on some devices like older SMART TVs?
  • ijuneja
    ijuneja about 3 years
    @mLstudent33 after trying to run just pass 2 instead of pass 1 followed by pass 2, I see that pass 1 produces some crucial intermediate log file which pass 1 makes use of.