Table of Contents

Mplayer and mencoder

Mplayer was also very useful in extracting audio (AC3) and video (MPEG2) from a badly encoded DVD, see Errori nella struttura di un DVD Video.

mplayer

-dvd-device <path to device>

Specifica il device DVD, predefinito /dev/dvd. Si può indicare anche una directory che contiene i file precedentemente copiati dal DVD (ad esempio con dvdbackup o con vobcopy). Di solito per copiare il contenuto di un DVD la via migliore è l'utilizzo dell'opzione -dumpstream.

Selezione scheda ALSA per output audio

In questo esempio viene selezionata la seconda scheda audio (la prima ha il numero zero) per l'output:

mplayer -ao alsa:device=hw=1.0 file.avi

/dev/rtc

If you want to execute mplayer as non-privileged user, set /dev/rtc device to mode 0664. As far I know, this does not pose any security issuse. The usage of /dev/rtc can help synchronizing audio/video. Mplayer needs the ability to use high resolution timers, run this command as root every time your machine boots:

echo 1024 > /proc/sys/dev/rtc/max-user-freq

You can achieve the same result adding to /etc/sysctl.conf this line:

dev/rtc/max-user-freq=1024

/etc/mplayer/codecs.conf

Check that you have the latest version of the file. With the Debian Marillat package you get it into /usr/share/doc/mplayer-k6/examples/. The same apply for the /etc/mplayer/mencoder_codecs.conf file.

Converting audio file with mplayer

In this example we will convert a Microsoft ASF audio file into a more usable WAVE audio PCM:

mplayer sample.asf -vo null -ao pcm:file=sample.wav

mencoder

How to extract subtitles from a DVD-Video into VobSub format

A better way to convert DVD-Video subtitles into VobSub format is to use transcode.

This is because mencoder seems to produce different image data into the .sub file and slightly different timestamps into the index (.idx) file depending on the used video codec (-ovc option): strange enough, I got different outputs using copy and raw options. Transcode instead seems to be more deterministic.

We can use mplayer to identify subtitle streams contained into the DVD, they are identified by an ID and a language:

mplayer -dvd-device $RIPDIR dvd://$TITLE -identify
...
ID_SUBTITLE_ID=0
ID_SID_0_LANG=it
ID_SUBTITLE_ID=1
ID_SID_1_LANG=en
ID_SUBTITLE_ID=2
ID_SID_2_LANG=it
...

The following command will generate two files: vobsubs-en.sub and vobsubs-en.idx from the second subtitles stream (sid = 1).

mencoder -dvd-device $RIPDIR dvd://$TITLE \
    -nosound -ovc copy -o /dev/null \
    -ifo $RIPDIR/VIDEO_TS/VTS_01_0.IFO \
    -sid 1 -vobsubout vobsubs-en

With vobsub2pgm you can convert VobSub subtitles into single .pgm images.

Ripping a DVD with mplayer

Sometimes trascoding a video DVD with avidemux (my favourite transcoding program) does not give correct results. I transcode the VOB files directly from the DVD, but the resulting video gets the multi-angle scenes interlaced. I think that the problem aroses from avidemux not being able to cope with DVD multi-angle scenes.

mplayer instead plays the video correctly, so I use mplayer to extract a MPEG stream, and then I user avidemux to transcode.

First of all, we can play a DVD track from an .iso image mounted with the loop option. In this example we play track #27, using audio track ID 130 and no subtitles:

mount -o loop,ro dvdimage.iso /media/cdrom
mplayer dvd://27//media/cdrom -aid 130 -nosub

With this command we will dump track #27 to a raw compressed file, the file will contains all the audio tracks and subtitles:

mplayer dvd://27//media/cdrom -dumpstream -dumpfile dvd_track_27.vob

The dumped file can be played with mplayer or opened (and transcoded in XviD/mp3) with avidemux.