Ripping the DVD to an MKV file
I suggest you use Handbrake (free, cross platform, open source) to rip the DVDs to an MKV file which contains everything.
Handbrake will already:
- Create an MKV file if you select MKV from Format under Output Settings
- Create an H.264-encoded video track of the titles you select from the DVD
- Create AAC-encoded audio tracks for all languages you select in the Audio tab
- Create soft-coded subtitles for all tracks you select in the Subtitles tab
Make sure you select Constant Quality for the video, and choose something between 18 and 28 for the quality. Lower means better, but you'll have to experiment on what looks good to you.
After you're done ripping, you can export the various tracks from the MKV file with FFmpeg. You can get a recent version by downloading a static build from the homepage. The static builds are always up-to-date, and if you're on Ubuntu, resist the temptation to use the one that comes with apt-get
: It's terribly outdated.
How the extraction works depends on how many audio and subtitle tracks your file has. To get this information later on, you can call ffmpeg -i input.mkv
and look at the output.
Here it says:
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, …
That's the video. Look further for audio—here are two audio tracks, one English, one German:
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, …
Stream #0:2(ger): Audio: aac (mp4a / 0x6134706D), 48000 Hz, …
Finally, you might see subtitles. Here, they're german:
Stream #0:3(ger): Subtitle: text (default)
Now, let's extract them…
Extract video only
First, we'll create an empty video with no audio or subtitles. Here, -an
disables the audio, and -sn
disables subtitles. Or leave out -sn
to keep the subtitles in.
ffmpeg -i input.mkv -c copy -an -sn output.mkv
Your output file will only contain video. You could also change the container here, if you want:
ffmpeg -i input.mkv -c copy -an -sn output.mp4
Extract audio only
This depends on how many audio tracks there are. To create separate audio files, we can do the following, assuming there are two audio tracks. Again, we'll disable video and subtitle output.
ffmpeg -i input.mkv \
-c:a:0 copy -vn -sn output-0.m4a
-c:a:1 copy -vn -sn output-1.m4a
As you can see, the index 0
and 1
specify the first and second audio tracks. If you have more, modify the command as needed and add another line.
Extract subtitles only
To get the subtitles, we'll follow a similar approach—assuming there is one subtitle track:
ffmpeg -i input.mkv -vn -an -c copy output.srt
Or, if there are multiple subtitle tracks:
ffmpeg -i input.mkv \
-c:s:0 copy -vn -an output-0.srt
-c:s:1 copy -vn -an output-1.srt
2Do you need AVI with MPEG-4 video and MP3 audio? These days it'd be much better in terms of quality and file size to use MP4 files with H.264 video and AAC audio. You could save probably half the space used, at the same quality. – slhck – 2013-01-22T15:10:00.107
@slhck Thank you for answering. I don't know the differences between them (going to seek out). But, the real case is that I need the video without audio, and then all audio files in separate mp3 (or else) format. – Mark Tower – 2013-01-22T15:11:51.683
See: What is a Codec (e.g. DivX?), and how does it differ from a File Format (e.g. MPG)? for the terminology. In your case it'd be best to create a video file that contains the audio, and then just extract the audio later. You can mute the audio from the video if you don't need it. It'd be a hassle to merge them together later—extracting is always easier.
– slhck – 2013-01-22T15:13:13.487@slhck Thanks, going to read :). I updated my question because I think I did not explain it in the greatest way. Hope you understand what I want... and If you think I could get the same results in another way, I hear you with open ears ;) Thanks, really. – Mark Tower – 2013-01-22T15:15:50.730