VOB conversion quality in FFmpeg
Solution 1:
ffmpeg -i input.vob -c:v copy -c:a copy output.mpg
This command does not reduce the size or alter quality. This merely demuxes the VOB and repackages it as an MPEG. You should be left with exact same quality. The size changes minimally due to losing the overhead of the VOB container.
If you want to maintain quality and reduce size you are going to have to convert it with another encoder like x264 or XviD to an MKV or MP4 container, for example:
ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4
This will give you H.264 video and AAC audio. Set -crf 23
for the video quality, where less means better quality (sane values are from 18–28). The audio quality can be changed with -b:a 192k
for fixed bitrate, or if you want to use another encoder such as -c:a libfaac
, you can choose VBR with -q:a 100
(100% default quality).
Solution 2:
I've recently been doing some VOB encoding after ripping a couple of irreplaceable DVDs. Using the ffmpeg version 1.2.4
out of Homebrew on OSX:
ffmpeg -probesize 2G -analyzeduration 2G \
-i VTS_04.VOB \
-map 0:0 -map 0:1 -map 0:2 -map 0:9 \
-metadata:s:a:0 language=eng -metadata:s:a:0 title="English Stereo" \
-metadata:s:a:1 language=jap -metadata:s:a:1 title="Japanese Stereo" \
-metadata:s:s:0 language=eng -metadata:s:s:0 title="English"
-c:v libx264 -filter:v yadif -crf 18 -level 3.1 -tune film \
-c:a copy \
-c:s copy \
OutputMovie.mkv
I had to set -probesize
and -analyzeduration
since the 5.4GB VOB file had streams starting later in the file which aren't found without these options.
Next the -map
parameter allows me to choose which streams to pass to the output - the video stream, the first two audio streams and the 9th stream, which are subtitles. Use ffprobe
with -probesize
& -analyzeduration
to see the list of streams.
Add some -metadata
to the audio and subtitle streams in the output.
Video encoding options after -c:v
you can read about elsewhere.
Finally copy as-is the audio and subtitle streams to the output file. The output must be MKV
in order to embed the subtitles and all the metadata correctly.
On my Macbook Air 2011, this encode took about 6 hours and spat out a perfect 2.4GB MKV file.