# mit mencoder eine serie von dvd zu h264

## pieter_parker

habe eine serie auf dvd9 die 25 dvds umfasst

habe die serie schon von dvd auf die festplatte gebackupt

ich finde es unhandlich soviele dvd scheiben zu haben

```

mplayer -identify VTS_01_1.VOB

MPlayer dev-SVN-r26753-4.1.2 (C) 2000-2008 MPlayer Team

CPU: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz (Family: 6, Model: 23, Stepping: 6)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Kompiliert für x86 CPU mit folgenden Erweiterungen: MMX MMX2 SSE SSE2

Spiele VTS_01_1.VOB.

ID_VIDEO_ID=0

ID_AUDIO_ID=128

ID_AUDIO_ID=129

ID_AUDIO_ID=130

ID_AUDIO_ID=131

ID_SUBTITLE_ID=0

MPEG-PS-Dateiformat erkannt!

VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  9800.0 kbps (1225.0 kbyte/s)

ID_FILENAME=VTS_01_1.VOB

ID_DEMUXER=mpegps

ID_VIDEO_FORMAT=0x10000002

ID_VIDEO_BITRATE=9800000

ID_VIDEO_WIDTH=720

ID_VIDEO_HEIGHT=576

ID_VIDEO_FPS=25.000

ID_VIDEO_ASPECT=0.0000

ID_AUDIO_FORMAT=8192

ID_AUDIO_BITRATE=0

ID_AUDIO_RATE=0

ID_AUDIO_NCH=0

ID_LENGTH=1176.26

ID_SEEKABLE=1

==========================================================================

Öffne Videodecoder: [mpegpes] MPEG 1/2 Video passthrough

VDec: VO wird versucht, auf 720 x 576 (Bevorzugter Farbraum: Mpeg PES) zu setzen.

Konnte keinen passenden Farbraum finden - neuer Versuch mit '-vf scale'...

Öffne Videofilter: [scale]

Der ausgewählte Videoausgabetreiber ist nicht kompatibel mit diesem Codec.

Versuche den scale-Filter zu deiner Filterliste hinzuzufügen,

z.B. mit -vf spp,scale an Stelle von -vf spp.

Initialisierung des Videodecoders fehlgeschlagen :(

Öffne Videodecoder: [ffmpeg] FFmpeg's libavcodec codec family

Ausgewählter Videocodec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2)

==========================================================================

ID_VIDEO_CODEC=ffmpeg2

==========================================================================

Öffne Audiodecoder: [liba52] AC3 decoding with liba52

Using SSE optimized IMDCT transform

Using MMX optimized resampler

AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)

ID_AUDIO_BITRATE=192000

ID_AUDIO_RATE=48000

ID_AUDIO_NCH=2

Ausgewählter Audiocodec: [a52] afm: liba52 (AC3-liba52)

==========================================================================

AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

ID_AUDIO_CODEC=a52

Starte Wiedergabe...

VDec: VO wird versucht, auf 720 x 576 (Bevorzugter Farbraum: Planar YV12) zu setzen.

VDec: Verwende Planar YV12 als Ausgabefarbraum (Nummer 0).

Film-Aspekt ist 1.33:1 - Vorskalierung zur Korrektur der Seitenverhältnisse.

ID_VIDEO_ASPECT=1.3333

VO: [xv] 720x576 => 768x576 Planar YV12

A:   2.2 V:   2.2 A-V:  0.002 ct:  0.052  49/ 49  7%  0%  0.3% 0 0

Beenden... (Ende)

```

ich bin dabei durchzulesen wie das mit dem umwandeln funktioniert, aber wie funktioniert es das ich 3 .vob dateien die zusammen gehoeren dem mencoder gebe, wie funktioniert es das ich den ton (ac3 192kbps unveraendert lasse und wie gebe ich ihm 2 tonspuren mit in die neue av datei ?

kann der mencoder .mkv erstellen ?

im grunde will ich nur von 720x576 25fps ~45min mpeg2 mit 4x ac3 192kbps ~2500mb --> 720x576 25fps ~45min in h264 mit 2x ac3 192kbps machen

die video aufloesung und 2 der 4 tonspuren sollen unveraendert bleiben, ich will aus mpeg2 -> h264 machen

die groesse der datei am ende ist nicht sehr wichtig

----------

## schachti

Ich empfehle Dir einen Blick auf media-video/dvdrip - damit sollte es relativ einfach gehen. Ich finde das Tool genial.

----------

## pieter_parker

media-video/dvdrip nutzt transcode, und nicht den mencoder ?

----------

## fangorn

Wenn du die vollen DVD Strukturen kopiert hast (.ifo, .bup) dann kannst du mit 

```
mplayer -dvd-device <pfad> dvd://<titel> -dumpstream -dumpfile <serienname>_<staffel>x<folge>.mpg
```

die einzelnen titel (Folgen) abspeichern. 

Leider habe ich meine scripte gerade nicht bei mir. Kann ich aber nachliefern. Ich benutze auch mencoder zum wandeln in x264. Vorzugsweise in mkv mit mehreren Tonspuren. Aber auch in AVI.

----------

## siddy

hallo!

 *Quote:*   

> aber wie funktioniert es das ich 3 .vob dateien die zusammen gehoeren dem mencoder gebe

 

mit mplayer /dev/dvd -dumpstream -dumpfile /pfad/zum/movie.vob

kriegst du den ganzen film von dvd auf die platte, und hast nur eine datei.

hab selber grad angefangen mit x264 herumzuspielen. ich verwende dazu avidemux aus dem berkano 

overlay. solltest dir eventuell mal ansehen.

 *Quote:*   

> die groesse der datei am ende ist nicht sehr wichtig

 

dann würd ich dir auf jeden fall zu einem divx codec raten. x264 ist extrem zeitaufwendig beim konvertieren. nur mal so zum vergleich:

dvd nach avi mit lavc codec: film von ca. 90 minuten im dualpass dauert bei fast dvd qualität ungefähr 80 minuten, und läuft auf 1 kern. größe vom avi 700 mb. ich verwende dafür mencoder und als gui acidrip.

damit geht das voll einfach, dvd ins laufwerk in acidrip ein paar einstellungen vorgenommen und das wars.

gleicher film mit x264 ca 6 - 7  stunden im dualpass. das ergebnis hat die gleiche qualitat, dateigröße 450 mb, wenn ich alle 4 kerne verwende.

hab das aber noch nicht richtig getestet, eventuell geht das auch schneller.

wenn du ein 64 bit os hast wirds etwas schneller gehen. mein vorschlag für den codec wäre xvid oder lavc,

bei 2 tonspuren (ac3) würd ich entweder dvdrip oder avidemux verwenden, geht mit mplayer/mencoder

auf der console auch, ist aber mehr arbeit.

greetz siddy

----------

## fangorn

Bei 25 DVDs mit je 3-4 Folgen lohnt sich die Investition in ein Script das von einem script angesteuert wird. Schon beim zusammenklicken einer Avidemux Joblist passieren zu viele Fehler. Außerdem ist es extrem stupide. 

Wenn es nicht x264 sein soll würde ich lavc empfehlen. Wobei die Zeit zum encoding relativ ist. Ob dein Rechner nun 3 oder 4 Wochen braucht reisst es meiner Meinung nach auch nicht mehr raus  :Wink: 

x264 skaliert recht gut auf mehreren Prozessoren. Je nach Einstellung war ein x264 Encoding durchaus schon mal schneller als ein lavc Encoding (bei vergleichbarer Qualität). 

Falls du die Serie auch am Rechner sehen willst empfehle ich sowieso ein Deinterlacing. Dann kannst du die zu erwartende Geschwindigkeit nochmal halbieren.

x264 hat den Vorteil, dass es auch bei Onepass encoding und PAL schon mit 1000 kbit/s ansehnliche Ergebnisse bringt. Diese Methode verschenkt zwar Bildqualität bei schnellen Kameraschwenks und heftiger Bewegung, aber u. U. kannst du dir den zweiten Durchgang sparen.

----------

## schachti

 *pieter_parker wrote:*   

> media-video/dvdrip nutzt transcode, und nicht den mencoder ?

 

Zumindest besitzt das Paket das USE flag mplayer, das eigentlich (TM) Unterstützung für mencoder selektieren sollte - da ich gerade nicht an einer gentoo-Kiste sitze, kann ich das auf die Schnelle nicht nachsehen.

----------

## fangorn

```
#!/bin/bash

help_text () {

cat <<EOF

usage riptoh264 [-d] moviename

    -d         directory mode. moviename has to be directoryname

               (DVD ripped into directory)

    -l         low quality encoding (XVID and mp3)

    -t title   instead of encoding the longest title, use this title

EOF

   exit 0

}

 

chapter=0  

lowquality="no"      

directory="no"

while getopts dhlt: option;

do

  case "$option"

  in

    d)  directory="yes";;

    l)  lowquality="yes";;

    t)  chapter=$OPTARG;; 

    h)  help_text ;;

  esac

done

shift $(($OPTIND - 1))

if [ -z $1 ]; then

   help_text ;

   exit;

fi

moviename="$1"

   

LSDEVICE=""

DEVICE=""

if [ "$directory" = "yes" ] ; then

   # Verzeichnis

   LSDEVICE="./$1"

else

   LSDEVICE="/dev/dvd"

fi

if [ $chapter = 0 ] ; then

   # Laengsten Track feststellen

   LCH=`lsdvd $LSDEVICE | grep Longest | awk '{print $3}'`

   # Anzahl Chapter feststellen

   NCH=`lsdvd -t $LCH $LSDEVICE | grep Chapters | awk '{fs=FS; FS=", "; print substr ($6, 1, length($6)-1)}'`

else 

   LCH=$chapter

   NCH=`lsdvd -t $LCH $LSDEVICE | grep Chapters | awk '{fs=FS; FS=", "; print substr ($6, 1, length($6)-1)}'`

fi

echo "encoding Title $LCH"

echo "which has $NCH chapters"

if [ "$directory" = "yes" ] ; then

   # Verzeichnis

   DEVICE=" -dvd-device ./$1 dvd://$LCH "

   AUDIO="-alang de"

else

   DEVICE="dvd://$LCH "

   AUDIO="-alang de"

fi

ASPECT=`mplayer $DEVICE -vo dummy -ao dummy -identify 2>&1 | grep MPEG2 | cut -d'(' -f2 | cut -d' ' -f2 | cut -c1`

SRC_FPS=`mplayer -vo dummy -ao dummy -identify $DEVICE 2>&1 | grep VIDEO_FPS | cut -d= -f2`

if [ "$directory" = "no" ] ; then

   ENCDEV=$DEVICE

else

   ENCDEV=" -dvd-device ./$moviename dvd://$LCH "

fi

if [ "$lowquality" = "no" ] ; then

   mplayer $DEVICE -alang en -dumpaudio -dumpfile "$moviename""_en.ac3"

#   mplayer $DEVICE -alang de -dumpaudio -dumpfile "$moviename""_de.ac3"

   SCALE=""

   if [ $ASPECT = 3 ] ; then

      # anamorphic

      # This is because my network player cannot handle aspect ratios

      SCALE="-vf scale=1024:576"

      # if you want to use mkv container you can set aspect ratio and don't need to scale

      #SCALE=""

   fi

   mencoder -v $ENCDEV $AUDIO $SCALE \

        -ovc x264 -x264encopts subq=4:bframes=4:b_pyramid:weight_b:pass=1:psnr:bitrate=1500:turbo=2:threads=0 \

        -oac copy\

        -ofps $SRC_FPS\

        -o /dev/null

   if [ $ASPECT = 3 ] ; then

      # anamorphic

      # This is because my network player cannot handle aspect ratios

      SCALE="-vf spp,scale=1024:576,hqdn3d=2:1:2"

      # if you want to use mkv container you can set aspect ratio and don't need to scale

      #SCALE=""

   fi

   mencoder -v $ENCDEV $AUDIO $SCALE \

        -ovc x264 -x264encopts subq=5:partitions=4x4:8x8dct:frameref=3:bframes=4:b_pyramid:pass=2:psnr:bitrate=1500:threads=0 \

        -oac copy\

        -ofps $SRC_FPS \

        -o "$moviename""_tmp.avi"

   #muxing   

   avimerge -i $moviename_tmp.avi -p $moviename_en.ac3 -a 1 -o $moviename.avi

   # if you want to use mkv, use this line instead

   #if [ $ASPECT = 3 ] ; then

   #   # anamorphic

   #   aspect="--aspect-ratio 0:16/9 "

   #else

   #   aspect=""

   #fi

   #"mkvmerge" -o "$moviename"".mkv"  $aspect --language 1:ger -a 1 -d 0 -S "$moviename""_tmp.avi" --language 0:eng -a 0 -D -S "$moviename""_en.ac3" --track-order 0:0,0:1,1:0

#   rm "temp"$1".avi"

else 

   SCALE="kerndeint"

   if [ $ASPECT = 3 ] ; then

      # anamorphic

      SCALE="-vf scale=1024:576"

   fi

   mencoder $ENCDEV -ovc lavc -oac copy \

           -ffourcc XVID $SCALE \

           -lavcopts vcodec=mpeg4:mbd=2:turbo:vpass=1:vbitrate=1500 \

           -o /dev/null

   if [ $ASPECT = 3 ] ; then

      # anamorphic

      SCALE="-vf kerndeint,spp,scale=1024:576,hqdn3d=2:1:2"

   fi

   mencoder $ENCDEV -ovc lavc -oac mp3lame \

           -ffourcc XVID $SCALE \

           -lameopts vbr=0:br=128:mode=0 \

           -lavcopts vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vpass=2:vbitrate=1500 \

           -o $moviename.avi

   

fi

```

Das sollte zum rumprobieren reichen  :Wink: 

Deinterlacing ist noch nicht implementiert. Aber die Parameter sollten leicht zu finden sein.

----------

