Inhaltsverzeichnis

Mencoder

Leider wird der MPlayer/MEncoder seit ein paar Jahren nicht mehr aktiv weiter entwickelt, weil es zu wenig Leute im Team gibt.

Film zuschneiden

Die Startposition wird mit der Option “-ss“ und die Länge des zu speichernden Filmausschnittes wird mit der Option “-endpos“ angegeben.

Zeiten in Stunden:Minuten:Sekunden angeben:

# mencoder -forceidx -ovc copy -oac copy -ss 0:7:12 -endpos 0:43:57 -o video-short.avi video.mpg

Zeiten in Sekunden angeben:

# mencoder -forceidx -ovc copy -oac copy -ss 432 -endpos 2637 -o video-short.avi video.mpg
  • -forceidx - der Index soll auf jeden Fall neu berechnet werden
  • -ovc copy - Bildspur soll nur kopiert, nicht bearbeitet werden
  • -oac copy - Tonspur soll nur kopiert, nicht bearbeitet werden
  • -ss - Startposition
  • -endpos - Laufzeit ab Startposition (nicht, wie der Name sugeriert, die Endposition)
  • -o - Ausgabedatei

Diese beiden Optionen funktionieren nicht zusammen mit Transcodieroption! Also nur zusammen mit “-ovc copy -oac copy“ oder “-ovc copy -noaudio“.

Deshalb muss man diese Optionen, zum zuschneiden, mit einem Extraaufruf verwenden. Es ist auch möglich “-ss“ und “-endpos“ jeweils separat zu benutzen.

Hiermit wird nicht „Frame“-genau geschnitten, sondern nur „I-Frame“-genau!

Beispielsweise könnte eine praktische Anwendung so aussehen:

Wenn man auf einer DVD mehrere Folgen einer Serie aufgenommen hat und diese dummerweise in einer einzigen Datei gespeichert hat, möchte man sie sicherlich wieder auseinander schneiden.

In diesem Fall ist zu beachten, das der Index komplett neu geschrieben werden muss, an jeder Position in der Datei, an der eine Folge beginnt der Index die Zeit 00:00:00 aufweist:

# mencoder -forceidx -ovc copy -oac copy -o 4_Folgen_neuer_Index.avi 4_Folgen.mpg

Jetzt kann man mit einem Videoplayer, der die aktuelle Position anzeigen kann, wie z.B. Totem oder VLC, die Zeitpunkte ermitteln und notieren, an denen eine neue Folge beginnt.

Mit diesen Zeiten können wir nun aus der Datei mit dem durchgehenden Index (4_Folgen_neuer_Index.avi) die vier Folgen, von je 19 Minuten und 20 Sekunden Länge, separat herausschneiden:

# mencoder -forceidx -ovc copy -oac copy -ss 00:00:00 -endpos 00:19:20 -o Folge_1.avi 4_Folgen_neuer_Index.avi
# mencoder -forceidx -ovc copy -oac copy -ss 00:19:20 -endpos 00:19:20 -o Folge_2.avi 4_Folgen_neuer_Index.avi
# mencoder -forceidx -ovc copy -oac copy -ss 00:38:40 -endpos 00:19:20 -o Folge_3.avi 4_Folgen_neuer_Index.avi
# mencoder -forceidx -ovc copy -oac copy -ss 00:58:00 -endpos 00:19:20 -o Folge_4.avi 4_Folgen_neuer_Index.avi

Bei jeder einzelnen Folge wird ebenfalls noch einmal der Index neu berechnet, damit die Zeitangaben stimmen.

Sollte es sich um eine Datei handeln, die einen Video- bzw. Audio-Codec enthält, der/die nicht in einem AVI-Container abgelegt werden können, dann sollte man einen Container verwenden, der alles kann.

Beispielsweise ist der Matroska-Container so ein universell einsetzbarer Container:

# mencoder -forceidx -ovc copy -oac copy -of lavf -lavfopts format=matroska -o 4_Folgen_neuer_Index.mkv 4_Folgen.mp4
# mencoder -forceidx -ovc copy -oac copy -ss 00:00:00 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_1.mkv 4_Folgen_neuer_Index.mkv
# mencoder -forceidx -ovc copy -oac copy -ss 00:19:20 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_2.mkv 4_Folgen_neuer_Index.mkv
# mencoder -forceidx -ovc copy -oac copy -ss 00:38:40 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_3.mkv 4_Folgen_neuer_Index.mkv
# mencoder -forceidx -ovc copy -oac copy -ss 00:58:00 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_4.mkv 4_Folgen_neuer_Index.mkv

mehrere Filme zusammenfühgen

# mencoder -forceidx -ovc copy -oac copy -o Film_komplett.avi Film01.avi Film02.avi Film03.avi
# mencoder -forceidx -ovc copy -oac copy -of lavf -lavfopts format=matroska -o Film_komplett.mkv Film01.avi Film02.avi Film03.avi

Filme mit dem MEncoder zuschneiden

Als erstes muss man die Schnittzeiten notieren, dazu verwende ich den MPlayer:

# mplayer -idx /home/otrdecoder/Filme_uncut/10_5_Apokalypse_12.04.22_20-15_rtl2_200_TVOON_DE.mpg.avi

Wenn man den Film, zum Schnittzeiten notieren, über ein langsames Netzwerk (z.B. 54Mbit-WLAN) abspielen muß, dann ist es sinnvoll, erst eine kleine Version davon zu erstellen (dazu verwende ich dieses Skript: film_transcodieren_mpeg4sh):

# ~/bin/film_transcodieren_mpeg4.sh -p dx50 -s 320x240 -z /home/otrdecoder/Filme_mini/10_5_Apokalypse_12.04.22_20-15_rtl2_mini -q /home/otrdecoder/Filme_uncut/10_5_Apokalypse_12.04.22_20-15_rtl2_200_TVOON_DE.mpg.avi

…es ist auch möglich, hier eine noch kleinere Auflösung zu wählen z.B.:

# ~/bin/film_transcodieren_mpeg4.sh -p dx50 -s 176x144 -z /home/otrdecoder/Filme_mini/10_5_Apokalypse_12.04.22_20-15_rtl2_mini -q /home/otrdecoder/Filme_uncut/10_5_Apokalypse_12.04.22_20-15_rtl2_200_TVOON_DE.mpg.avi

dann würde der Aufruf so aussehen:

# mplayer -idx /home/otrdecoder/Filme_mini/10_5_Apokalypse_12.04.22_20-15_rtl2_mini.avi

Jetzt stoppt man an jeder Schnittstelle den Film und notiert sich die Zeit. In unserem Beispiel ist nicht nur Werbung im Film sondern vor und nach dem Film auch noch zusätzlicher Mittschnitt. In diesem Beispiel beginnt der eigentliche Film erst nach 325 Sekunden (A: 325.0 V: 325.0), nach 1491 Sekunden beginnt dann die erste Werbepause. Damit kann man sagen, dass die erste Filmsequenz von Sekunde „325“ bis Sekunde „1491“ (⇒ „325-1491“) geht… und genau so muß es dem Schnitt-Skript unten auch übergeben werden:

so wird das Skript eingesetzt:

# ~/bin/film_zuschneiden_mencoder.sh -i /home/otrdecoder/Filme_uncut/10_5_Apokalypse_12.04.22_20-15_rtl2_200_TVOON_DE.mpg.avi -c '325-1491 1858-4622 4882-6193 6514-7592 7879-10692 11170-11633'

oder mit extra angegebenen Ziel:

# ~/bin/film_zuschneiden_mencoder.sh -i /home/otrdecoder/Filme_uncut/10_5_Apokalypse_12.04.22_20-15_rtl2_200_TVOON_DE.mpg.avi -a /home/otrdecoder/Filme/10_5_Apokalypse_2012-04-22_20-15_rtl2.avi -c '325-1491 1858-4622 4882-6193 6514-7592 7879-10692 11170-11633'

~/bin/film_zuschneiden_mencoder.sh

#!/bin/sh
VERSION=20120506
#
# Hiermit wird nicht "Frame"-genau geschnitten, sondern nur "I-Frame"-genau!
#
# Es werden zur Ausgabe nur drei verschiedene Container unterstützt:
# - avi
# - mpg/mpeg
# - mkv (Standard)
#
PARAMETER="${@}"
if [ "${#}" -eq "0" ] ; then
        echo "
        HILFE:
        ${0} -h
        "
        exit 0
fi
while [ "${#}" -ne "0" ] ; do
        case "$1" in
                -i)
                        ORIGINALDATEINAME="${2}"
                        shift
                        ;;
                -a)
                        ZIELDATEINAME="${2}"
                        shift
                        ;;
                -c)
                        CUTZEITEN="${2}"
                        shift
                        ;;
                -h)
                        echo "
			Angaben in Sekunden:
                        ${0} -i Film_uncut.avi -a Film_sauber.avi -c '325.5-650.2 1650.3-1975.4 2975.1-3300.7'
                        -i	originaler Dateiname (ungeschnitten)
                        -c	Schnittzeitpunkte
                        "
                        exit 0
                        ;;
                *)
                        if [ "$(echo "${1}"|egrep '^-')" ] ; then
                                echo "Der Parameter '${1}' wird nicht unterstützt!"
                                ABBRUCH="Ja"
                        fi
                        shift
                        ;;
        esac
done
if [ "${ABBRUCH}" = "Ja" ] ; then
	exit 1
fi
#------------------------------------------------------------------------------#
if [ -z "${ORIGINALDATEINAME}" ] ; then
        echo "Sie haben den Parameter '-i' nicht gesetzt..."
        exit 1
fi
if [ -z "${ZIELDATEINAME}" ] ; then
        ZIELDATEINAME="${ORIGINALDATEINAME}"
        NEUEDATEITEILE="$(basename ${ZIELDATEINAME}|rev|sed 's/[.]/ /;s/_NOOVT_/ /;s/.*[ ]//g;s/[.]/_/g'|rev)_-_geschnitten"
else
        NEUEDATEITEILE="$(basename ${ZIELDATEINAME}|rev|sed 's/[.]/ /;s/[.]/_/g'|rev)"
fi
NEUERDATEINAME="$(echo "${NEUEDATEITEILE}"|awk '{print $1}')"
NEUEDATEIENDUNG="$(echo "${NEUEDATEITEILE}"|awk '{print $2}')"
if [ "${NEUEDATEIENDUNG}" == "avi" ] ; then
        AFORMAT="-of avi"
elif [ "${NEUEDATEIENDUNG}" == "mpg" -o "${NEUEDATEIENDUNG}" == "mpeg" ] ; then
        NEUEDATEIENDUNG=mpg
        AFORMAT="-of mpeg"
else
        NEUEDATEIENDUNG=mkv
        AFORMAT="-of lavf -lavfopts format=matroska"
fi
AUSGABEVERZEICHNIS="$(dirname ${ZIELDATEINAME})"
LOGPFADNAME="${AUSGABEVERZEICHNIS}/${NEUERDATEINAME}.log"
AUSGABEPFAD="${AUSGABEVERZEICHNIS}/${NEUERDATEINAME}.${NEUEDATEIENDUNG}"
#------------------------------------------------------------------------------#
if [ -e "${AUSGABEPFAD}" ] ; then
	echo "
	Die Ausgabe-Datei
	${AUSGABEPFAD}
	existiert bereits...
	"
	exit 1
fi
if [ -e "${ORIGINALDATEINAME}" ] ; then
	echo "
	Video-Datei: gefunden
	zwischengespeicherte Dateien:
	${AUSGABEVERZEICHNIS}/*LFDNR_${NEUERDATEINAME}.avi
	Ausgabedatei:
	${AUSGABEPFAD}
	"
else
	echo "
	Die Video-Datei
	${ORIGINALDATEINAME}
	konnte nicht gefunden werden...
	"
	exit 1
fi
#------------------------------------------------------------------------------#
NUMMER="0"
for i in ${CUTZEITEN}
do
	NUMMER="$(echo "${NUMMER}"|awk '{printf "%.2u\n",$1+1}')"
	VONZ="$(echo "${i}"|awk -F'-' '{print $1}')"
	BISZ="$(echo "${i}"|awk -F'-' '{print $2-$1}')"
	echo "mencoder -forceidx -ovc copy -oac copy -ss ${VONZ} -endpos ${BISZ} ${AFORMAT} -o ${AUSGABEVERZEICHNIS}/${NUMMER}LFDNR_${NEUERDATEINAME}.avi ${ORIGINALDATEINAME}"
	mencoder -forceidx -ovc copy -oac copy -ss ${VONZ} -endpos ${BISZ} ${AFORMAT} -o ${AUSGABEVERZEICHNIS}/${NUMMER}LFDNR_${NEUERDATEINAME}.avi ${ORIGINALDATEINAME}
done
TEMPDATEIEN="$(ls ${AUSGABEVERZEICHNIS}/*LFDNR_${NEUERDATEINAME}.avi)"
echo "
${0} ${PARAMETER}
mencoder -forceidx -ovc copy -oac copy -o ${AUSGABEPFAD} ${TEMPDATEIEN}
" > ${LOGPFADNAME}
mencoder -forceidx -ovc copy -oac copy -o ${AUSGABEPFAD} ${TEMPDATEIEN}
rm -f ${AUSGABEVERZEICHNIS}/*LFDNR_${NEUERDATEINAME}.avi
ls -lh ${ORIGINALDATEINAME} ${AUSGABEPFAD} ${LOGPFADNAME}

Hinweis

Will man eine DVD encoden, braucht man die Option -ofps 24000/1001 (die Notation “-ofps 23.976“ sollte man nicht mehr verwenden!) nur angeben, wenn man ein NTSC-Video generieren möchte!

Ohne die Option -ofps wird das Produkt die selbe Framerate haben wie das Original (im Zweifelsfall hat man so bessere Qualität).

Weiß man nicht was man für ein Ausgangsmaterial hat, dann kann man das ermitteln:

MEncoder Bug's

defekter Muxer

Leider ist der Muxer im MEncoder defekt, deshalb wird das MKV-Video nicht überall abgespielt werden können.

Aus diesem Grund werden wir den MKV-Container einfach von einem vernünftigen Werkzeug neu bauen lassen:

# mkvmerge --default-language ger -o NEUERFILM_AVC.mkv NEUERFILM_MEncoder.mkv

vbv

Leider ist die Qualität in dem neuen MEncoder (seit Juli 2010) miserabel, wenn man die VBV-Optionen verwendet („vbv_maxrate“ und „vbv_bufsize“). Verwendet man die gleichen Parametern direkt mit dem x264, dann hat man eine sehr gute Qualität. Die VBV-Optionen sind für eine Blu-Ray- bzw. AVCHD-Kompatibilität aber zwingend erforderlich.

Work-Around

Solange das Problem nicht behoben ist, muss man die Audio- und Videospur getrennt mit den geeigneten Werkzeugen verarbeiten.

Durch die PAL-Beschleunigung laufen Bild und Ton auseinander!

Verwendet man als Ausgangsmaterial einen Film mit 24 Bildern pro Sekunde und möchte daraus einen 576-Zeilen-Film machen, der soweit möglich auch noch Blu-Ray-kompatibel ist, muss das Entprodukt 25 Bilder pro Sekunde anzeigen!

Denn nur die Formate mit 720 und 1080 Zeilen, unterstützen mehr als eine Bildwiederholrate, darunter 24 Bilder pro Sekunde!

Bei der Umwandlung wird in soeinem Fall nur sehr selten das 25. Bild eingfühgt, da diese Modifikation dann nur sehr aufwendig wieder rückgängig gemacht werden kann! Üblicherweise wird der Film einfach mit ca. 4% erhöhter Geschwindigkeit (25 statt 24 Bilder pro Sekunde) abgespielt. Das nennt man dann PAL-Beschleunigung.

Und genau das wird auch bei dieser Methode gemacht, aus dem Grund ist die DVD-Spieldauer einer handelsüblichen PAL-DVD auch immer ein paar Minuten kürzer als eine handelsübliche NTSC-DVD mit dem gleichen Film!

Schlimm ist das nicht, denn man bekommt von den 4% als Zuschauer nix mit. Nur hat in unserem Fall dann die Videospur von einem Film mit 9 Miniten und 56 Sekunden Länge (Big Buck Bunny), nach dem Transcodiervorgang nur noch eine Länge von 9 Minuten und 32 Sekunden… aber die Tonspur ist immernoch 9 Minuten und 56 Sekunden lang, also ganze 24 Sekunden länger!

Will man die Originallaufzeit beibehalten, muss man den Film mit der Option „film2pal“ übersetzen, das funktioniert aber nur mit dem MPEG2-Codec und ist deshalb für unsere Zwecke absolut unbrauchbar!

Audio- und Videospur syncronisieren

Da man in soeinem Fall dem MEncoder nicht mehr die Aufgabe der Syncronisation zwischen Audio- und Videospur (-mc 0) überlassen kann, empfehle ich vor dem muxen, die Länge der beiden Spuren zu ermitteln.

Mit diesen Werten kann man (auf extrem einfache Weise) Audio- und Videospur im MKV-Container sogar bei unterschiedlicher Längen syncronisieren. In dem oben erwähnten Beispiel mit den 24 Sekunden Laufzeitunterschied zwischen Audio- und Videospur bei „Big Buck Bunny“, wurde auf diese Weise die Syncronisation auf absolut Problemlose Weise wieder hergestellt.

AVC mit Mencoder

1-Pass

mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts crf=25:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac faac -faacopts mpeg=4:object=4:raw:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o NEUERFILM_MEncoder.mkv

2-Pass

mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=1:bitrate=2500:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac copy          -of lavf -lavfopts format=matroska -passlogfile NEUERFILM_pass.log -o /dev/null
mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=2:bitrate=2500:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac faac -faacopts mpeg=4:object=4:raw:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -passlogfile NEUERFILM_pass.log -o NEUERFILM_MEncoder.mkv

Multi-Pass

Der mittlere Aufruf mit pass=3, kann beliebig oft ausgeführt werden.

Der erste und der Letzte Aufruf ist mit denen aus „2-Pass“ identisch.

mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=1:bitrate=2500:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac copy          -of lavf -lavfopts format=matroska -passlogfile NEUERFILM_pass.log -o /dev/null
mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=3:bitrate=2500:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac copy          -of lavf -lavfopts format=matroska -passlogfile NEUERFILM_pass.log -o /dev/null
mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=2:bitrate=2500:b_adapt=2:direct=auto:me=tesa:no_fast_pskip:merange=24:partitions=all:ref=16:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:psy_rd=/0.15:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level=4.1:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:threads=1 -vf softskip,harddup -oac faac -faacopts mpeg=4:object=4:raw:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -passlogfile NEUERFILM_pass.log -o NEUERFILM_MEncoder.mkv

MEncoder mit den x264-Optionen verwenden

Da der MEncoder den x264 zum transcodieren verwenden kann, versteht er auch seine Parameter. Allerdings ist die Schreibweise etwas anders und der Parameter „level“ heißt bei MEncoder „level_idc“, auch wird der Wert für Level beim MEncoder ohne Dezimaltrennzeichen angegeben (also „30“ statt „3.0“). Leider versteht der MEncoder zur Zeit nicht alle Optionen, so sind ihm die Optionen „slow_firstpass“, „no_fast_pskip“ und „nal_hrd“ unbekannt.

Aus dem Grund ist es zur Zeit schon absolut unmöglich mit dem MEncoder direkt Blu-Ray-kompatible Filme zu erstellen, denn die Option „nal_hrd“ ist dafür zwingend nötig!

Aber ich gehe mal davon aus, dass sich das in Zukunft ändern wird und deshalb will ich, in Vorbereitung darauf, hier Beispielhaft zeigen, wie man die x264-Optionen in das MEncoder-Format überführt und einsetzt.

Zur Zeit kann man Blu-Ray-kompatibelen Video-Code so erzeugen, wie z.B. hier beschrieben.

Als erstes legen wir mal die Blu-Ray-kompatibelen Optionen für unsere gewünschte Filmgröße fest, hier sind drei Beispiele:

# 1920x1080 / Blu-Ray / Level 4.1 (großes HD-Profil)
X264OPTIONEN="--threads 1 --b-adapt 2 --bframes 8 --direct auto --me tesa --merange 24 --partitions all --ref 4 --subme 10 --trellis 2 --rc-lookahead 60 --deblock -1:-1 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --b-pyramid strict --slices 4 --aud --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1"
# 1280x720 (720p) / Blu-Ray / Level 4.0 (kleines HD-Profil)
X264OPTIONEN="--threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 6 --subme 10 --trellis 2 --deblock -1:-1 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 24000 --vbv-bufsize 24000 --level 4.0 --keyint 24 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1"
# 1280x720 (720p) / DVD / Level 4.0 (kleinstes HD-Profil)
X264OPTIONEN="--threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 6 --subme 10 --trellis 2 --deblock -1:-1 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 15000 --vbv-bufsize 15000 --level 4.0 --keyint 24 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1"
# 720x576 / DVD / Level 3.0 (PAL; SD-Profil: halbiert den Platzbedarf einer Standard-DVD, ohne Qualitätsverlust)
X264OPTIONEN="--threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 5 --subme 10 --trellis 2 --deblock -1:-1 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 12000 --vbv-bufsize 12000 --level 3.0 --keyint 24 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1"

Die Kommandos im Folgenden sind nur Beispiele, im speziellen Fall muss man die Optionen “-aspect 16/9“, “-aid 128“, „alter_Film.avi“, „crf=23“, „pp=ci“, „crop=704:432:08:72“, „scale=352:216“, „br=192“, „tns“, “-channels 2“ und „BITRATE=2000“ entweder angepasst, weg gelassen oder unverändert einsetzen. Diese Optionen werden im allgemeinen auf die gewünschte Ausgangsqualität bzw. auf die Art des Quellmaterials angepasst.

Der Parameter „nr“ wurde hier nicht verwendet, er ist aber sinnvoll, wenn man verrauschtes Quellmaterial transcodieren möchte! Hat man den gleichen Film zwei mal, einmal in sauberer Form (zum Beispiel als DVD) und einmal in verrauschter Form (zum Beispiel aus dem Fernsehen aufgenommen), dann ist nach dem transcodieren (zum Beispiel von MPEG-2 nach AVC) die verrauschte Version deutlich größer. Verwendet man dann eine Rauschunterdrückungsoption (beim x264 ist das „nr“) mit einem geeigneten Wert (den muss man ausprobieren oder schätzen), dann wird nicht nur das Bild besser, sondern auch die Datei kleiner!

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header$(echo "${X264OPTIONEN}" | sed -e 's#:#/#g' -e 's/[ ]*--/:/g' -e 's/ /=/g' -e 's/-/_/g' -e 's#=_#=-#g' -e 's#/_#/-#g' -e 's/:level=/:level_idc=/g' -e 's/:level_idc=[0-9]*[\.]*/&-³/g' -e 's/\.-³//g' -e 's/=$//' -e 's/slow_firstpass://' -e 's/no_fast_pskip://' -e 's/nal_hrd=[a-z]*://') -vf pp=ci,crop=704:432:08:72,scale=352:216,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

Aber, wie unter „MEncoder Bug's“ zu lesen ist, ergibt das im Moment ein sehr schlechtes Ergebnis.

Will man keinen großen Aufstand machen und kann auf die Blu-Ray-Kompatibilität verzichten, dann kann man folgendes Kommando verwenden:

# export BITRATE="2000"
# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:bitrate=${BITRATE}$(echo "${X264OPTIONEN}" | sed -e 's#:#/#g' -e 's/[ ]*--/:/g' -e 's/ /=/g' -e 's/-/_/g' -e 's#=_#=-#g' -e 's#/_#/-#g' -e 's/:level=/:level_idc=/g' -e 's/:level_idc=[0-9]*[\.]*/&-³/g' -e 's/\.-³//g' -e 's/=$//' -e 's/slow_firstpass://' -e 's/no_fast_pskip://' -e 's/vbv_[a-z]*=[0-9]*://g' -e 's/nal_hrd=[a-z]*://') -vf pp=ci,crop=704:432:08:72,scale=352:216,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

Dieses Kommando ist fast drei mal schneller als das mit den VBV-Optionen und liefert ein deutlich besseres Ergebnis, wird aber auch in Zukunft nicht Blu-Ray- bzw. AVCHD-kompatibel sein.

Will man aber einen Blu-Ray-kompatibelen Film mit guter Qualität erhalten, dann bleibt zur Zeit nur ein etwas aufwendigeres Vorgehen, wie es unter folgendem Link beschrieben wird: avc.

Beispiele

1920×1080 / Blu-Ray / Level 4.1 (großes HD-Profil):

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:threads=1:b_adapt=2:bframes=8:direct=auto:me=tesa:merange=24:partitions=all:ref=4:subme=10:trellis=2:rc_lookahead=60:deblock=-1/-1:weightp=0:bframes=3:vbv_maxrate=40000:vbv_bufsize=30000:level_idc=41:keyint=24:b_pyramid=strict:slices=4:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1 -vf pp=ci,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

1280×720 (720p) / Blu-Ray / Level 4.0 (kleines HD-Profil):

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:threads=1:b_adapt=2:direct=auto:me=tesa:merange=24:partitions=all:rc_lookahead=60:ref=6:subme=10:trellis=2:deblock=-1/-1:weightp=0:bframes=3:vbv_maxrate=24000:vbv_bufsize=24000:level_idc=40:keyint=24:b_pyramid=strict:slices=1:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1 -vf pp=ci,scale=1280:720,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

1280×720 (720p) / DVD / Level 4.0 (kleinstes HD-Profil):

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:threads=1:b_adapt=2:direct=auto:me=tesa:merange=24:partitions=all:rc_lookahead=60:ref=6:subme=10:trellis=2:deblock=-1/-1:weightp=0:bframes=3:vbv_maxrate=15000:vbv_bufsize=15000:level_idc=40:keyint=24:b_pyramid=strict:slices=1:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1 -vf pp=ci,scale=1280:720,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

720×576 / DVD / Level 3.0 (kleinstes SD-Profil: halbiert den Platzbedarf einer Standard-DVD, ohne Qualitätsverlust):

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:threads=1:b_adapt=2:direct=auto:me=tesa:merange=24:partitions=all:rc_lookahead=60:ref=5:subme=10:trellis=2:deblock=-1/-1:weightp=0:bframes=3:vbv_maxrate=12000:vbv_bufsize=12000:level_idc=30:keyint=24:b_pyramid=strict:slices=1:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1 -vf pp=ci,crop=704:432:08:72,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

720×576 ⇒ 352×216 / DVD / Level 3.0:

# mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23:global_header:threads=1:b_adapt=2:direct=auto:me=tesa:merange=24:partitions=all:rc_lookahead=60:ref=5:subme=10:trellis=2:deblock=-1/-1:weightp=0:bframes=3:vbv_maxrate=12000:vbv_bufsize=12000:level_idc=30:keyint=24:b_pyramid=strict:slices=1:aud:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1 -vf pp=ci,crop=704:432:08:72,scale=352:216,softskip,harddup -oac faac -faacopts mpeg=4:object=2:br=192:tns -channels 2 -of lavf -lavfopts format=matroska -o Film_mencoder.mkv

Auszug aus der man-Page

x264enc (-x264encopts)

bitrate=<Wert>

Setzt die durchschnittliche Bitrate auf kbits/Sekunde (Standard: aus). Da die lokale Bitrate variieren kann, ist es möglich, dass dieser Durchschnittswert für sehr kurze Videos ungenau berechnet wird (siehe ratetol). Konstante Bitraten können erreicht werden, indem man diese Option mit vbv_maxrate kombiniert, allerdings vermindert das die Qualität signifikant.

qp=<0-51>

Diese Option wählt den Quantizer für P-Frames. Intra- und B-Frames werden mit diesem Wert jeweils durch ip_factor und pb_factor verrechnet. 20-40 ist ein brauchbarer Bereich. Niedrigere Werte bewirken geringere Verlusten bei höheren Bitraten. 0 ist verlustfrei. Beachte, dass die Quantisierung bei H.264 anders funktioniert als bei MPEG-1/2/4. Die Quantisierungsparameter (QP) von H.264 liegen auf einer logarithmischen Skala. Das Mapping ist ungefähr H264QP = 12 + 6*log2(MPEGQP). Beispielsweise ist MPEG bei QP=2 vergleichbar mit H.264 bei QP=18.

crf=<1.0-50.0>

Aktiviert den „constant quality mode“ und legt die Qualität fest. Die Skala ist ähnlich der des QP. Ähnlich wie die Bitraten-basierten Modi ermöglicht dies, für jeden Frame einen anderen QP festzulegen, je nach dessen Komplexität.

pass=<1-3>

2- oder 3-pass-Modus (d.h. mit 2 oder 3 Durchläufen) aktivieren. Es wird empfohlen, immer im 2- oder 3-pass-Modus zu enkodieren, da dies zu einer besseren Bit-Verteilung und allgemein besseren Qualität führt.

  • 1 - Erster Durchlauf
  • 2 - Zweiter Durchlauf (bei Encodierung mit zwei Durchläufen)
  • 3 - n-ter Durchlauf (zweiter und dritter Durchlauf des 3-Durchläufe-Modus)

Und so funktioniert es bzw. so wird es angewandt:

Der erste Durchlauf (pass=1) erstellt Statistiken über das Video und schreibt diese in eine Datei. Es bietet sich an, einige CPU-intensive Optionen zu deaktivieren; abgesehen von denen, die als Voreinstellung aktiviert sind.

Im 2-pass-Modus liest der zweite Durchlauf (pass=2) diese Datei wieder ein und berechnet auf dieser Grundlage die Bitratenkontrolle.

Im 3-pass-Modus tut der zweite Durchlauf (pass=3, dies ist kein Tippfehler) beides: Zuerst liest er die Statistiken ein, dann überschreibt er sie. Du kannst alle Optionen verwenden, außer vielleicht den sehr CPU-intensiven.

Der dritte Durchlauf (pass=3) macht das gleiche wie der zweite Durchlauf, außer dass er die Statisitiken des zweiten Durchlaufs verwendet. Du kannst alle Optionen verwenden, einschließlich der sehr CPU-intensiven.

Der erste Durchlauf kann entweder eine durchschnittliche Bitrate (ABR) oder einen konstanten Quantizer verwenden. ABR wird empfohlen, da dafür nicht das Ermitteln eines Quantizers nötig ist. Nachfolgende Durchläufe sind ABR; es muss eine Bitrate angegeben werden.

turbo=<0-2>

Schneller erster Durchlauf. Während des ersten Durchlaufs des Encodierens mit mehreren Durchläufen kann die Geschwindigkeit durch Deaktivieren einiger Optionen gesteigert werden - ohne bzw. ohne merkliche Minderung der Qualität des letzten Durchlaufs.

  • 0 - deaktiviert (Standard)
  • 1 - Reduziere subq und frameref und deaktiviere einige „inter macroblock partitions analysis“-Modi.
  • 2 - Reduziere subq und frameref auf 1, verwende eine „diamond ME“-Suche und deaktiviere alle „partitions analysis“-Modi.

Stufe 1 kann die Geschwindigkeit des ersten Durchlaufs bis auf das Doppelte erhöhen, ohne das globale PSNR im Vergleich zu einem vollen ersten Durchlauf zu verändern.

Stufe 2 kann die Geschwindigkeit des ersten Durchlaufs bis auf das Vierfache erhöhen - bei einer Veränderung des PSNR von ca. +/- 0.05dB im Vergleich zu einem vollen ersten Durchlauf.

keyint=<Wert>

Setzt das maximale Intervall zwischen IDR-Frames (Standard: 250). Höhere Werte sichern Bits und erhöhen dadurch die Qualität auf Kosten der Suchpräzision. Anders als MPEG-1/2/4 ist H.264 nicht von DCT-Versatz bei hohen keyint-Werten betroffen.

keyint_min=<1-keyint/2>

Setzt das minimale Intervall zwischen IDR-Frames (Standard: 25). Wenn innerhalb dieses Intervalls Szenenwechsel stattfinden, werden sie dennoch als Intra-Frames encodiert, sie starten aber nicht mit einem neuen GOP. In H.264 begrenzen Intra-frames nicht unbedingt einen geschlossen GOP, da ein P-Frame durch mehrere als nur den vorangehenden Frame vorausberechnet werden kann (siehe auch frameref). Daher sind Intra-Frames nicht notwendigerweise spulbar. IDR-Frames verhindern, dass nachfolgende P-Frames sich auf einen Frame vor dem IDR-Frame beziehen.

scenecut=<-1-100>

Legt fest, wie aggressiv zusätzliche Intra-Frames eingefügt werden (Standard: 40). Mit geringen Werten für scenecut muss der Codec oft einen Intra-Frame einfügen, wenn er den Wert für keyint übersteigen würde. Gute Werte für scenecut finden evtl. eine bessere Position für Intra-Frames. Hohe Werte setzen mehr Intra-Frames als nötig ein und verschwenden damit Bits. -1 schaltet die scenecut-Erkennung ab, dadurch werden Intra-Frames nur einmal pro jedem anderen keyint-Frame eingesetzt, sogar wenn ein Szenenwechsel früher stattfindet. Diese ist nicht empfehlenswert und verschwendet Bitraten, denn als scenecuts enkodierte P-Frames sind genau so groß wie I-Frames, ohne dabei aber den „keyint counter“ zurückzusetzen.

frameref=<1-16>

Die Anzahl der vorhergehenden Frames, die zum Vorausberechnen in B- und P-Frames verwendet werden (Standard: 1). Das ist besonders effektiv bei animierten Filmen; bei Realfilm-Material nehmen die Verbesserungen bei mehr als etwa 6 Referenz-Frames ziemlich schnell ab. Dies hat keinen Einfluss auf die Dekodiergeschwindigkeit, erhöht aber den zum Encodieren benötigten Speicherbedarf. Einige Dekodierer können maximal 15 Referenz-Frames behandeln.

bframes=<0-16>

maximale Anzahl aufeinanderfolgender B-Frames zwischen Intra- and P-Frames (Standard: 0)

(no)b_adapt

Legt automatisch fest, wann und wieviele B-Frames verwendet werden, bis maximal zum o.a. Wert (Standard: an). Falls diese Option deaktiviert ist, wird die maximale Anzahl für B-Frames verwendet.

b_bias=<-100-100>

Erlaubt Einflussnahme auf die Funktion von b_adapt. Ein höherer Wert für b_bias erzeugt mehr B-Frames (Standard: 0).

(no)b_pyramid

Ermöglicht die Verwendung von B-Frames als Referenz für die Vorhersage anderer Frames. Nehmen wir als Beispiel 3 aufeinanderfolgende Frames: I0 B1 B2 B3 P4. Ohne diese Option verhalten sich B-Frames genau wie MPEG-[124]. Sie werden also in der Reihenfolge I0 P4 B1 B2 B3 kodiert, und alle B-Frames werden auf Grundlage von I0 und P4 berechnet. Mit dieser Option werden sie als I0 P4 B2 B1 B3 encodiert. B2 ist das gleiche wie oben, jedoch wird B1 aus I0 and B2 berechnet, während B3 auf B2 und B4 basiert. Das Ergebnis ist eine etwas bessere Komprimierung bei fast keinem Geschwindigkeitsverlust. Allerdings ist dies eine experimentelle Option: die Feinabstimmung fehlt noch, und daher bringt sie möglicherweise keinen Vorteil. Benötigt bframes >= 2. Nachteil: Erhöht die Decodierungsverzögerung auf 2 Frames.

(no)deblock

Deblocking-Filter verwenden (Standard: an). Da diese Option sehr wenig Zeit im Vergleich zum Qualitätsgewinn benötigt, sollte sie nicht deaktiviert werden.

deblock=<-6-6>,<-6-6>

Der erste Parameter ist AlphaC0 (Standard: 0). Dieser regelt Schwellenwerte für den H.264-Inloop-Deblocking-Filter. Zunächst legt dieser Parameter den Höchstwert für die Änderung fest, den der Filter auf jeden einzelnen Pixel anwenden darf. Weiterhin beeinflusst dieser Parameter den Schwellenwert für den Unterschied, der über die Kante hinaus gefiltert wird. Positive Werte reduzieren blockförmige Strukturen, verwischen aber auch Details.

Der zweite Parameter ist Beta (Standard: 0). Beeinflusst den Schwellwert für Details. Sehr detailreiche Blöcke werden nicht gefiltert, da das Glätten durch den Filter stärker auffallen würde als die ursprünglichen Blöcke.

Die Standardeinstellung des Filters erreicht fast immer optimale Qualität, daher ist es am besten, keine oder nur geringe Änderungen vorzunehmen. Falls allerdings dein Quellmaterial schon Blöcke oder Rauschen aufweist und Du diese entfernen möchtest, kannst Du den Wert etwas erhöhen.

(no)cabac

Verwende CABAC (Context-Adaptive Binary Arithmetic Coding) (Standard: an). Verlangsamt geringfügig die Encodierung und Decodierung, spart aber für gewöhnlich 10-15% Bitrate. Solange Du keinen großen Wert auf Geschwindigkeit bei der Decodierung legst, solltest Du diese Option nicht deaktivieren.

qp_min=<1-51> (ABR oder Modus mit zwei Durchläufen)

Minimaler Quantisierungsparameter, 10-30 ist ein brauchbarer Bereich (Standard: 10).

qp_max=<1-51> (ABR oder Modus mit zwei Durchläufen)

Maximaler Quantisierungsparameter (Standard: 51)

qp_step=<1-50> (ABR oder Modus mit zwei Durchläufen)

Maximaler Wert um den der Quantisierungsparameter zwischen Frames erhöht/gesenkt werden kann (Standard: 4).

ratetol=<0.1-100.0> (ABR oder Modus mit zwei Durchläufen)

Erlaubte Streuung der durchschnittlichen Bitrate (keine besonderen Einheiten)

vbv_maxrate=<Wert> (ABR oder Modus mit zwei Durchläufen)

Maximale lokale Bitrate in kBits/:Sekunde (Standard: deaktiviert)

vbv_bufsize=<Wert> (ABR oder Modus mit zwei Durchläufen)

Mittelungsperiode für vbv_maxrate, in kBits (Standard: keine, muss angegeben werden wenn vbv_maxrate aktiviert ist)

vbv_init=<0.0-1.0> (ABR oder Modus mit zwei Durchläufen)

Anfängliche Pufferauslastung als Bruchteil von vbv_bufsize (Standard: 0.9)

ip_factor=<Wert>

Quantizer-Faktor zwischen Intra- und P-Frames (Standard: 1.4)

pb_factor=<Wert>

Quantizer-Faktor zwischen P- und B-Frames (Standard: 1.3)

qcomp=<0-1> (ABR oder Modus mit zwei Durchläufen)

Komprimierung des Quantisierungsparameters (Standard: 0.6). Ein niedrigerer Wert führt zu einer konstanteren Bitrate, während ein höherer Wert zu einem konstanteren Quantisierungsparameter führt.

cplx_blur=<0-999> (nur im Modus mit zwei Durchläufen)

Zeitliche Unschärfe der geschätzten Frame-Komplexität vor der Kurvenkomprimierung (Standard: 20). Niedrigere Werte ermöglichen einen volatileren Quantisierungsparameterwert, höhere Werte forcieren sanftere Schwankungen. cplx_blur stellt sicher, dass jeder Intra-Frame eine mit den nachfolgenden P-Frames vergleichbare Qualität hat. Außerdem stellt diese Option sicher, dass abwechselnd hoch- und weniger komplexe Frames (z.B. Animation mit wenigen fps) keine Bits auf schwankende Quantizer verschwenden.

qblur=<0-99> (nur im Modus mit zwei Durchläufen)

Zeitliche Unschärfe des Quantisierungsparameters nach der Kurvenkomprimierung (Standard: 0.5). Niedrigere Werte ermöglichen einen volatileren Quantisierungsparameterwert, höhere Werte forcieren sanftere Schwankungen.

zones=<Zone0>[/<Zone1>[/...]]

Vom Benutzer festgelegte Qualität für besondere Abschnitte (Ende, Abspann, Jede Zone ist <Start-Frame>,<End-Frame>,<Option>, wobei Option die folgenden Werte annehmen kann:

  • q=<0-51> - Quantisierungsparameter
  • b=<0.01-100.0> - Bitraten-Multiplikator

Anmerkung: Die Quantisierungsparameter-Option wird nicht streng forciert. Sie betrifft nur die Planungsphase von ratecontrol und unterliegt der Überlauf-Kompensation sowie qp_min/qp_max.

direct_pred=<Name>

Legt den Typ der Bewegungsvorhersage fest, der für direkte Markoblöcke in B-Frames verwendet wird.

  • 0 - none - Direkte Makroblöcke werden nicht genutzt.
  • 1 - spatial - Bewegungsvektoren werden über benachbarte Blöcke extrapoliert. (Standard)
  • 2 - temporal - Bewegungsvektoren werden über den nachfolgenden P-Frame extrapoliert.
  • 3 - auto - Der Codec wählt für jeden Frame zwischen räumlicher und zeitlicher Vorhersage.

Zeitlich und räumlich haben in etwa die gleiche Geschwindigkeit und PSNR, die Wahl zwischen beiden hängt vom Videoinhalt ab. Auto ist etwas besser, jedoch langsamer. Auto eignet sich vor allem bei Encodierung mit mehreren Durchläufen. direct_pred=none ist sowohl langsamer als auch von schlechterer Qualität.

(no)weight_b

Gewichtete Berechnung in B-Frames verwenden. Ohne diese Option messen bidirektional berechnete Makroblöcke jedem Referenz-Frame gleiches Gewicht bei. Mit dieser Option werden die Gewichtungen anhand der zeitlichen Position des B-Frames im Verhältnis zu den Referenzen bestimmt. Benötigt bframes > 1.

partitions=<Liste>

Aktiviere einige optionale Makroblock-Typen (Standard: p8x8,b8x8,i8x8,i4x4).

  • p8x8 - Aktiviere die Typen p16x8, p8x16, p8x8.
  • p4x4 - Aktiviere die Typen p8x4, p4x8, p4x4. p4x4 wird nur bei subq >= 5 empfohlen, und auch nur bei niedrigen Auflösungen.
  • b8x8 - Aktiviere die Typen b16x8, b8x16, b8x8.
  • i8x8 - Aktiviere Typ i8x8. i8x8 hat keinen Einfluß, wenn 8x8dct nicht aktiviert ist.
  • i4x4 - Aktiviere Typ i4x4.
  • all - Aktivere alle der oben gelisteten Typen.
  • none - Deaktiviere alle der oben gelisteten Typen.

Unabhängig von dieser Option werden die Makroblock-Typen p16x16, b16x16 und i16x16 immer aktiviert.

Die Kunst besteht darin, Typen und Größen zu finden, die einen bestimmten Bereich des Bildes am besten beschreiben. So wird ein weiter Kameraschwenk bei 16×16 Blöcken besser dargestellt, während kleine, bewegliche Objekte besser mit kleinen Blöcken dargestellt werden.

(no)8x8dct

Adaptive räumliche Transformationsgröße: Erlaubt Makroblöcken die Wahl zwischen 4×4 und 8×8 DCT. Erlaubt außerdem den Makroblock-Typ i8x8. Ohne diese Option wird nur 4×4 DCT verwendet.

me=<Name>

Wählt den Vollpixel-Bewegungsschätzungs-Algorithmus.

  • dia - Diamant-Suche, Radius 1 (schnell)
  • hex - Hexagon-Suche, Radius 2 (Standard)
  • umh - Ungerade Multi-Hexagon-Suche (langsam)
  • esa - Gründliche Suche (sehr langsam und nicht besser als umh)

me_range=<4-64>

Radius der gründlichen bzw. Multi-Hexagon-Bewegungssuche (Standard: 16)

subq=<1-7>

Anpassen der Verfeinerungsqualität von subpel. Dieser Parameter kontrolliert das Gleichgewicht von Qualität und Geschwindigkeit beim Prozess der Bewegungsschätzung. subq=5 kann bis zu 10% besser als subq=1 komprimieren.

  • 1 - Wendet Vollpixel-Präzisionsbewegungsschätzung auf alle in Frage kommenden Makroblock-Typen an, wählt dann den besten Typen und verfeinert schließlich die Bewegung dieses Typen auf schnelle Viertelpixel-Präzision (am schnellsten).
  • 2 - Wendet Halbpixel-Präzisionsbewegungsschätzung auf alle in Frage kommenden Makroblock-Typen an, wählt dann den besten Typen und verfeinert schließlich die Bewegung dieses Typen auf schnelle Viertelpixel-Präzision.
  • 3 - Wie 2, verwendet jedoch langsamere Viertelpixel-Verfeinerung.
  • 4 - Wendet schnelle Viertelpixel-Präzisionsbewegungsschätzung auf alle in Frage kommenden Makroblock-Typen an, wählt dann den besten Typen und schließt dann die Viertelpixel-Verfeinerung für diesen Typen ab.
  • 5 - Wendet die bestmögliche Viertelpixel-Präzisionsbewegungsschätzung auf alle in Frage kommenden Makroblock-Typen an, und wählt dann den besten Typen (Standard).
  • 6 - Aktiviert Rate-Distortion-Optimierung von Makroblock-Typen in Intra- und P-Frames an.
  • 7 - Aktiviert Rate-Distortion-Optimierung von Bewegungsvektoren und Intra-Modi (am besten).

„alle in Frage kommenden“ meint im obigen Zusammenhang nicht alle aktivierten Typen; 4×4, 4×8, 8×4 werden nur probiert, wenn 8×8 besser als 16×16 ist.

(no)chroma_me

Berücksichtigt Chrominanz-Informationen während der Subpixel-Bewegungssuche. (Standard: aktiviert). Benötigt subq>=5.

(no)mixed_refs

Ermöglicht für jede 8×8- oder 16×8-Bewegungspartition die unabhängige Wahl eines Referenz-Frames. Ohne diese Option muss ein gesamter Makroblock dieselbe Referenz benutzen. Benötigt frameref>1.

(no)brdo

Aktiviert die Rate-Distortion-Optimierung von Makroblock-Typen in B-Frames. Benötigt subq>=6.

(no)bime

Verfeinert die zwei Bewegungsvektoren in bidirektionalen Makroblöcken anstatt Vektoren aus Vorwärts- und Rückwärtssuchen wiederzuverwenden. Diese Option hat ohne B-Frames keinerlei Wirkung.

trellis=<0-2>

Optimale Quantisierung der Rate-Distortion

  • 0 - deaktiviert (Standard)
  • 1 - nur bei abschließender Encodierung aktiviert
  • 2 - während allen Modus-Entscheidungen aktiviert (langsam, benötigt subq>=6)

deadzone_inter=<0-32>

Setzt die Größe der Inter-Luma-Quantisierungs-Deadzone für nicht-Trellis-Quantisierung (Standard: 21). Niedrigere Werte helfen dabei, feine Details und Körnung zu bewahren (typischerweise nützlich bei Encodierungen mit hoher Bitrate/Qualität), während höhere Werte dabei helfen, diese Details herauszufiltern, um Bits zu sparen, die dafür auf andere Macroblöcke und Frames verwendet werden können (typischerweise nützlich bei Encodierungen mit mangelnder Bitrate). Es wird empfohlen, mit Feineinstellungen für deadzone_intra zu beginnen, bevor du diesen Parameter verwendest.

deadzone_intra=<0-32>

Setzt die Größe der Intra-Luma-Quantisierungs-Deadzone für nicht-Trellis-Quantisierung (Standard: 11). Diese Option hat dieselbe Wirkung wie deadzone_inter, bezieht sich aber auf Intra-Frames. Es wird empfohlen, mit Feineinstellungen für diese Option zu beginnen, bevor du deadzone_inter änderst.

(no)fast_pskip

Führt in P-Frames eine frühe Sprungerkennung durch (Standard: aktiviert). Dies verbessert die Geschwindigkeit normalerweise ohne zusätzliche Kosten, kann manchmal jedoch zu Artefakten führen in Bereichen ohne Details, wie ein Himmel.

nr=<0-100000>

Rauschunterdrückung, 0 bedeutet deaktiviert. 100-1000 ist ein sinnvoller Bereich für typischen Inhalt, du möchtest den Wert aber vielleicht erhöhen bei etwas verrauschteren Inhalten (Standard: 0). Da der Einfluß auf die Geschwindigkeit gering ist, möchtest du diese Methode der Rauschunterdrückung mit Filtern wie denoise3d oder hqdn3d möglicherweise vorziehen.

chroma_qp_offset=<-12-12>

Einen anderen Quantisierungsparameter für die Chrominanz im Vergleich zur Helligkeit verwenden. Brauchbare Werte liegen im Bereich -2-2 (Standard: 0).

aq_mode=<0-2>

Definiert, wie die adaptive Quantisierung (AQ) die Bits verteilt:

  • 0 - deaktiviert
  • 1 - Vermeide es, Bits zwischen Frames zu bewegen.
  • 2 - Bewege Bits zwischen Frames (Standard).

aq_strength=<positiver Fließkommawert>

Kontrolliert, wie stark die adaptive Quantisierung (AQ) Blockbildung und Verwaschungen in flachen und texturierten Bereichen reduziert (Standard: 1.0). Ein Wert von 0.5 wird zu schwacher AQ und weniger Details führen, während ein Wert von 1.5 zu starker AQ und mehr Details führt.

cqm=<flat|jvt|<Dateiname>>

Verwendet entweder eine vom Benutzer vorgegebene Quantisierungsmatrix oder lädt eine Matrixdatei im JM-Format.

  • flat - Verwendet die vorgegebene Flache-16-Matrix (Standard).
  • jvt - Verwendet die JVT-Matrix.
  • <filename> - Verwende die vorgegebene Matrixdatei im JM-Format.

ANMERKUNG: Beim Verwenden der CMD.EXE von Windows können Probleme beim Parsen der Kommandozeile auftreten, wenn alle CQM-Listen verwendet werden sollen. Das liegt an der Beschränkung der Kommandozeilenlänge. In diesem Fall ist empfehlenswert, die Listeninhalte in eine CQM-Datei im JM-Format zu packen und wie oben angegeben zu laden.

cqm4iy=<list> (siehe auch cqm)

Eigene 4×4 Intra-Luminanz-Matrix, angegeben als Liste von 16 kommagetrennten Werten im Bereich von 1-255.

cqm4ic=<list> (siehe auch cqm)

Eigene 4×4 Intra-Chrominanz-Matrix, angegeben als Liste von 16 kommagetrennten Werten im Bereich von 1-255.

cqm4py=<list> (siehe auch cqm)

Eigene 4×4 Inter-Luminanz-Matrix, angegeben als Liste von 16 kommagetrennten Werten im Bereich von 1-255.

cqm4pc=<list> (siehe auch cqm)

Eigene 4×4 Inter-Chrominanz-Matrix, angegeben als Liste von 16 kommagetrennten Werten im Bereich von 1-255.

cqm8iy=<list> (siehe auch cqm)

Eigene 8×8 Intra-Luminanz-Matrix, angegeben als Liste von 64 kommagetrennten Werten im Bereich von 1-255.

cqm8py=<list> (siehe auch cqm)

Eigene 8×8 Inter-Luminanz-Matrix, angegeben als Liste von 64 kommagetrennten Werten im Bereich von 1-255.

level_idc=<10-51>

Legt die Ebene des Bitstroms fest, wie im Anhang A des H.264-Standards beschrieben. (Standard: 51 - Ebene 5.1). Wird benötigt, um dem Dekoder mitzuteilen, welche Funktionen er unterstützen muss. Verwende diesen Parameter nur, wenn Du weißt, was Du tust und wenn Du ihn setzen musst.

threads=<0-16>

Erstellt Threads, um parallel auf mehreren CPUs zu encodieren (Standard: 1). Dies führt zu geringen Einbußen der Kompressionsqualität. 0 oder 'auto' weist x264 an, die verfügbare Anzahl CPUs zu erkennen und eine entsprechende Anzahl Threads zu wählen.

(no)global_header

Bewirkt, dass SPS und PPS nur einmal bei Beginn des Bitstreams erscheinen (Standard: deaktiviert). Manche Wiedergabegeräte, wie die PSP, benötigen diese Option. Das Standardverhalten veranlasst, dass SPS und PPS vor jedem IDR-Frame wiederholt werden.

(no)interlaced

Behandle den Videoinhalt als interlaced.

log=<-1-3>

Einstellen, wieviel an Loginformationen auf dem Bildschirm ausgegeben wird.

  • -1 - keine
  • 0 - Nur Fehler ausgeben.
  • 1 - Warnungen
  • 2 - PSNR und andere Analyse-Statistiken nach der Encodierung ausgeben (Standard)
  • 3 - PSNR, QP, Frame-Type, Größe und andere Statistiken für jeden Frame

(no)psnr

Gib PSNR-Statistiken aus.

ANMERKUNG: Die PSNR-Felder 'Y', 'U', 'V' und 'Avg' in der Zusammenfassung sind nicht mathematisch exakt, sondern einfach die durchschnittliche PSNR pro Frame. Sie werden nur zum Vergleich mit dem JM-Referenz-Codec beibehalten. Für alle anderen Zwecke benutze bitte den PSNR 'Global' oder aber die PSNRs pro Frame, die von log=3 ausgegeben werden.

(no)ssim

Gib die Ergebnisse der Structural Similarity Metric aus. Dies ist eine Alternative zu PSNR, die unter Umständen besser mit der wahrgenommenen Qualität des komprimierten Videos korrelliert.

(no)visualize

x264-Visualisierung während der Encodierung aktivieren. Falls das x264 auf deinem System das unterstützt, wird während des Encodierprozesses ein neues Fenster geöffnet, in dem x264 versuchen wird, eine Übersicht darüber zu geben, wie jeder Block enkodiert wird. Jeder Block-Typ in der Visualisierung wird wiefolgt eingefärbt:

  • red/pink - Intra-Block
  • blue - Inter-Block
  • green - Skip-Block
  • yellow - B-Block

Diese Funktion sollte als experimentell betrachtet werden; sie kann in zukünftigen Versionen ihr Verhalten ändern. Insbesondere beruht sie darauf, dass x264 mit Unterstützung für Visualisierungen kompiliert wurde. Momentan ist es so, dass x264 nach jeder Encodierung und Visualisieren eines Frames anhält, auf einen Tastendruck des Benutzers wartet und dann erst den nächsten Frame enkodiert.

 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki