This is an old revision of the document!


ffmpeg

archives: Wrong audio track by default

Note: This is a bug I would run into after extracting a VOB from a DVD, and running ffmpeg -i movie.vob

ffmpeg lists the audio tracks in reverse order *in some cases*, so be sure to map the right one. See order of 0x8x below for an example.

You can see the streams by ffmpeg output that it is reading and writing to:

    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 59.94 tb(r)
    Stream #0.1[0x85]: Audio: ac3, 48000 Hz, 5.0, s16, 448 kb/s
    Stream #0.2[0x84]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s
    Stream #0.3[0x83]: Audio: ac3, 48000 Hz, quad, s16, 448 kb/s
    Stream #0.4[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s
    Stream #0.5[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.6[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s
Output #0, avi, to 'movie.avi':
    Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 32:27 DAR 16:9], q=2-31, 200 kb/s, 59.94 tb(c)
    Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.6 -> #0.1 [sync #0.1]

If you map any of them, you need to map all of them (both audio and video).

ffmpeg -i movie.vob -map 0.0:0.0 -map 0.6:0.1

archives: From Letterbox to Anamorphic Widescreen

ffmpeg -i movie.vob -acodec copy \
	-croptop 60 -cropbottom 60 \
	-s 720x480 -aspect 16:9 -deinterlace \
	-vcodec libx264 -vpre hq -crf 12 -threads 0 \
	movie.mp4

The original source of DVDs is a 720×480 picture. The height is stretched to 540 pixels (480 x 1.125 = 540) to display it, so that the aspect ratio is 4:3 (720/540 = 1.33333).

What I want to do is both crop the black and bottom bars, but also keep the new size the same as the original one … just so that the new specs mirror exactly what a widescreen DVD would be (instead of having arbitrary heights/widths).

Since the original size is a height of 480 pixels, *that* is the number to use when counting how many pixels to crop. *Do not* count it from the display size (540). That's why I'm cropping by 60 on top and bottom (verified with GIMP).

If you look at a “normal” widescreen movie that doesn't have black bars at the top and bottom, you'll see that source material is the same size: 720×480. The aspect ratio, though, is 16:9, so the display is stretched to 854×480 – in this case, it's the width that is stretched instead of the height (480 x 16/9 = 853.333).

Last but not least, the MPEG2 codec can store the display aspect ratio inside the header data, which is why you tell ffmpeg that the new one is 16:9.

If you looked at a widescreen and a fullscreen video, the original display size is actually the same: 720×480. They are just stretched differently based on the aspect ratio.


Navigation