Search code examples
videoffmpeg

Efficient ogv video conversion in Linux


I have a ogv video file of 113MB. I converted it to mp4 and reduced its size from command line through ffmpeg. The resulting video is around 12MB sized, but the quality is really bad. I would like to get a better quality at cost of a higher file size, but I don't know how. Can you suggest me a correct way to do that?

EDIT: This is the full console output of the command:

Input #0, ogg, from 'ibvs.ogv':
   Duration: 00:00:58.86, start: 0.000000, bitrate: 16134 kb/s
        Stream #0.0: Data: skeleton
        Stream #0.1: Video: theora, yuv420p, 960x864 [PAR 1:1 DAR 10:9], 15 fps, 15 tbr, 15 tbn, 15 tbc

[buffer @ 0x1dbaa80] w:960 h:864 pixfmt:yuv420p
Output #0, mp4, to 'test.mp4':

    Metadata:
        encoder         : Lavf53.21.1
        Stream #0.0: Video: mpeg4, yuv420p, 960x864 [PAR 1:1 DAR 10:9], q=2-31, 200 kb/s, 15 tbn, 15 tbc

Stream mapping:
    Stream #0.1 -> #0.0
Press ctrl-c to stop encoding
frame=  883 fps=128 q=31.0 Lsize=    8654kB time=58.87 bitrate=1204.3kbits/s    
video:8646kB audio:0kB global headers:0kB muxing overhead 0.092074%

Solution

  • Try, with a recent version of ffmpeg,

    ffmpeg -i input.ogv -crf 18 output.mp4
    

    Lower CRF values produce better result but larger files. If you want the output to have the input file framerate, you can skip the r option.

    With your current version, which seems to be from 2011, try

    ffmpeg -i input.ogv -b:v 8000k output.mp4