.mov-2-mpeg4

kompatibles konvertieren von Videodaten: .mov in mpeg4 / h.264

Dieser Artikel ist noch nicht fertig

Gerade Fotoapparate bieten neuerdings die Moeglichkeit auch ein Video aufzunehmen. Diese werden dann als .mov gespeichert, sind richtig grosse Dateien, die sich schlecht per Mail verteilen lassen. Selbst ein hochladen zu diversen Videoportalen - damit es die lieben Verwandten anschauen koennen - wird zur Geduldsprobe. Beispiel:

bastian@terastar:~$ ls -sh video.mov
866M video.mov

bastian@terastar:~$ mplayer -frames 0 -identify -vo null video.mov 2>/dev/null | grep ID_
ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_FILENAME=video.mov
ID_DEMUXER=mov
ID_VIDEO_FORMAT=jpeg
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=640
ID_VIDEO_HEIGHT=480
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=raw 
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=8000
ID_AUDIO_NCH=1
ID_LENGTH=633.00
ID_VIDEO_CODEC=ffmjpeg
ID_AUDIO_BITRATE=64000
ID_AUDIO_RATE=8000
ID_AUDIO_NCH=1
ID_AUDIO_CODEC=pcm

Zusammenfassend:

  • 850 Megabyte und
  • gerade mal etwas ueber 10 Minuten lang
  • Audiospur unkomprimiert

Da sollte also noch was gehen. Die Erfahrung sagt in etwa: 90 Minuten gute Spielfilmqualitaet sind ca. 700 Megabyte. Ergo sollten in unserem Fall deutlich weniger als 7,5 Megabyte / Minute moeglich sein. Folgendes Anleitung kann man einfach auf der Kommandozeile copy&pasten.

# dateiname festlegen und qualitaet festlegen
FILE="/pfad/zum/movie.mov"
QUALI="normal"                  # niedrig,normal,gut

# ab jetzt nur noch copy&paste
# Parameter fuer Qualitaet, etc. ermitteln
  if [ "$QUALI" = "niedrig" ]; then
     BITRATE=400
     FPS=10
elif [ "$QUALI" = "normal" ]; then
     BITRATE=700
     FPS=20
else
     BITRATE=1000
     FPS=25
fi

if [ "$( file -bi $FILE )" = "video/quicktime" ]; then
     TYP="mov"

# variablen in die shell verfuegbar machen
eval $( mplayer -frames 0 -identify -vo null "$FILE" 2>/dev/null | grep ID_ )

# optionen: hoehen/seitenverhaeltnis erzwingen
O1="-aspect $( awk -v w=$ID_VIDEO_WIDTH -v h=$ID_VIDEO_HEIGHT 'BEGIN{ print w/h }' )"

# optionen: aufloesung erzwingen
O2="-vf scale=${ID_VIDEO_WIDTH}:${ID_VIDEO_HEIGHT},harddup"

# h264-optionen - erster Durchlauf
O3a="-ovc x264 -x264encopts bitrate=$BITRATE:threads=auto:pass=1:turbo=2:frameref=1:bframes=3:"
O3b="nob_pyramid:direct_pred=auto:partitions=all:8x8dct:subq=1:mixed_refs:nodct_decimate"
O3c=" -nosound -ofps $FPS -noskip -of rawvideo -o /dev/null mf://$FILE -mf fps=$FPS"
O3="$O3a$O3b$O3c"

# h264-optionen - zweiter Durchlauf
O4a="-ovc x264 -x264encopts bitrate=$BITRATE:threads=auto:pass=2:frameref=5:bframes=3:"
O4b="nob_pyramid:direct_pred=auto:partitions=all:8x8dct:subq=6:mixed_refs:nodct_decimate"
O4c=" -nosound -ofps $FPS -noskip -of rawvideo -o /dev/null mf://$FILE -mf fps=$FPS"
O4="$O4a$O4b$O4c"

# in DixX /mp2
OV="-ovc lavc -ffourcc DX50"
OA="-oac lavc"
mencoder "$FILE" $OV $OA -o "${FILE}.dixv"

# in DivX / faac
OV="-ovc lavc -ffourcc DX50"
OA="oac faac -faacopts br=64:object=2 -channels 2 -srate 22000"
mencoder "$FILE" $OV $OA -o "${FILE}.dixv"

Tags: convert, mencoder, ffmpeg, mov, mpeg4, h264 | 20:01, 8. Mai 2008 (CEST)