Encoden mit dem mencoder

  • Hallo,


    Ziel ist es eine <acronym class="jgs_acronym_standart" title="Digital Versatile Disc"> DVD</acronym> zu erstellen mit dem mencoder als encoder. Das ganze soll ohne <acronym class="jgs_acronym_standart" title="(Graphical User Interface) Grafische Benutzeroberfläche mit Mausbedienung, die kommerziell erfolgreich als erstes von Apple eingesetzt wurde und unter Windows ebenfalls Verwendung findet. Graphical User Interface (GUI), von der PARC-Forschungsgruppe des Xerox-Konzerns &quot;erfunden&quot;, hat den Siegeszug des WWW, mit einer benutzerfreundlichen und leicht zu bedienenden Browser-Oberfläche, beschleunigt.">GUI</acronym> wie z.B. Avidemux im Terminal geschehen.
    Ich möchte hier noch kurz erwähnen dass das Ganze bestimmt nicht der Weisheit letzter Schluss ist. Dafür sind die Möglichkeiten zu vielfältig.


    So, los geht's.


    Testfile:


    So als erstes brauchen wir einen Test-File, man will ja nicht den ganzen Film encoden um zu sehen das die eingesetzten Filter nicht so funktionieren wie man sich das gewünscht hat.
    Dazu nehme ich folgendes Script.
    <table style="width: 98%; table-layout: fixed;" align="center"> <tbody><tr> <td> <table style="width: 100%;" class="tableinborder" cellpadding="4" cellspacing="1"> <tbody><tr class="smallfont"> <td class="tablecat" colspan="2">code:</td> </tr> <tr class="smallfont"> <td class="inposttable" align="right" nowrap="nowrap">
    1:
    </td> <td class="inposttable" style="width: 100%;" valign="top" align="left" nowrap="nowrap">
    mencoder /home/morpheus/Downloads/a1.avi -ovc copy -oac copy -ss 5:00 -endpos 8:00 -o /home/morpheus/Videos/Test mencoder/test.avi</td> </tr> </tbody></table>
    </td> </tr> </tbody></table>
    Hier gibt es nur zwei Optionen die eben erklären will.
    -ss 5:00 Damit startet der mencoder zum herausschneiden des Files in der Filmminute 5. Wer braucht schon den Vorspann zum testen.
    -endpos 8:00 Damit endet das herausschneiden bei Filmminute 13. Es werden also 8min. Film herausgeschnitten.
    Somit hat man ein kurzes Stück Film zum testen.


    1-pass encoding


    <table style="width: 98%; table-layout: fixed;" align="center"> <tbody><tr> <td> <table style="width: 100%;" class="tableinborder" cellpadding="4" cellspacing="1"> <tbody><tr class="smallfont"> <td class="tablecat" colspan="2">code:</td> </tr> <tr class="smallfont"> <td class="inposttable" align="right" nowrap="nowrap">
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    </td> <td class="inposttable" style="width: 100%;" valign="top" align="left" nowrap="nowrap">
    mencoder \
    /home/morpheus/Test.avi \
    -of mpeg \
    -ovc lavc -lavcopts vcodec=mpeg2video:aspect=4/3:vrc_buf_size=1835:vrc_minrate=2000:\
    vrc_maxrate=8000:vbitrate=5000:keyint=12:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10:vstrict=0:turbo -ofps 25 \
    -mpegopts format=dvd:tsaf \
    -srate 48000 \
    -sws 7 \
    -vf scale=720:448,expand=720:576,harddup \
    -oac lavc -lavcopts acodec=ac3:abitrate=192 \
    -af lavcresample=48000 \
    -o /home/morpheus/1.mpg \</td> </tr> </tbody></table>
    </td> </tr> </tbody></table>


    Die Erklärungen zu den einzelnen Optionen findet hier unter dem 2-Pass Script.


    2-Pass encoding


    <table style="width: 98%; table-layout: fixed;" align="center"> <tbody><tr> <td> <table style="width: 100%;" class="tableinborder" cellpadding="4" cellspacing="1"> <tbody><tr class="smallfont"> <td class="tablecat" colspan="2">code:</td> </tr> <tr class="smallfont"> <td class="inposttable" align="right" nowrap="nowrap">
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    </td> <td class="inposttable" style="width: 100%;" valign="top" align="left" nowrap="nowrap">
    #!/bin/bash
    mencoder \
    /home/morpheus/Test.avi \
    -of mpeg \
    -ovc lavc -lavcopts vcodec=mpeg2video:aspect=4/3:vpass=1:vrc_buf_size=1835:vrc_minrate=2000:\
    vrc_maxrate=8000:vbitrate=5000:keyint=12:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10:vstrict=0:turbo -ofps 25 \
    -mpegopts format=dvd:tsaf \
    -srate 48000 \
    -sws 7 \
    -vf scale=720:448,expand=720:576,harddup \
    -oac lavc -lavcopts acodec=ac3:abitrate=192 \
    -af lavcresample=48000 \
    -o /home/morpheus/.Trash/1.mpg \
    && \
    sleep 30 ; mencoder \
    /home/morpheus/Test.avi \
    -of mpeg \
    -ovc lavc -lavcopts vcodec=mpeg2video:aspect=4/3:vpass=2:vrc_buf_size=1835:vrc_minrate=2000:\
    vrc_maxrate=8000:vbitrate=5000:keyint=12:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10:vstrict=0 -ofps 25 \
    -mpegopts format=dvd:tsaf \
    -srate 48000 \
    -sws 7 \
    -vf scale=720:448,expand=720:576,harddup \
    -oac lavc -lavcopts acodec=ac3:abitrate=192 \
    -af lavcresample=48000 \
    -o /home/morpheus/Videos/Test.mpg</td> </tr> </tbody></table>
    </td> </tr> </tbody></table>
    Das Script wird als ausführbare Datei gespeichert, man kann aber die einzelnen passes auch getrennt in das Terminal kopieren. Wenn man möchte, wichtig ist das die Log Datei aus dem ersten Pass nicht gelöscht wird. Die Einstellung müssen im ersten und zweiten pass identisch sein. Der Unterschied zum 1-pass verfahren besteht nur aus dem Eintrag vpass der Rest ist auch hier identisch.


    Die einzelnen Einstellungen:


    Allgemeine Optionen:


    -of mpeg Mit diesem Kommando kontrolliert der mencoder das der korrekte Dateityp erstellt wird.


    -mpegopts format=dvd:tsaf Setzt die <acronym class="jgs_acronym_standart" title="Motion Picture Experts Group (Kompressionsstandard für digitale Videobilder)">MPEG</acronym> Optionen. Format setzt den Stream Typ fest. tsaf setzt Zeitstempel (timestamps) bei allen Frames, wenn möglich, empfohlen bei format=dvd.


    srate= Erzwingt eine zu benutzende Audioabspielrate (Optional, Default ist 48000)


    -sws 7 Mit dieser Option wird der Resizer bestimmt der unter scale benutzt werden soll.
    Folgende Möglichkeiten gibt es:
    <table style="width: 98%; table-layout: fixed;" align="center"> <tbody><tr> <td> <table style="width: 100%;" class="tableinborder" cellpadding="4" cellspacing="1"> <tbody><tr class="smallfont"> <td class="tablecat" colspan="2">code:</td> </tr> <tr class="smallfont"> <td class="inposttable" align="right" nowrap="nowrap">
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    </td> <td class="inposttable" style="width: 100%;" valign="top" align="left" nowrap="nowrap">
    0 fast bilinear
    1 bilinear
    2 bicubic (gute Qualität) (Standard)
    3 experimentell
    4 nearest neighbour (schlechte Qualität)
    5 area
    6 luma bicubic / chroma bilinear
    7 gauss
    8 sincR
    9 lanczos
    10 natural bicubic spline</td> </tr> </tbody></table>
    </td> </tr> </tbody></table>


    Lavc Optionen:


    vcodec=mpeg2video Dürfte klar sein, hier wird der benutzte codec eingestellt.


    aspect= Hier wird die Aspect Ratio eingestellt. Wenn du dir nicht sicher bist kannst du auch autoaspect angeben. Dann entscheidet der mencoder welches Seitenverhältnis. (autoaspect ist unter mpeg2 nur bedingt zu gebrauchen die Aspect Ratio von Hand einstellen ist immer die erste Wahl)


    keyint=12 Stellt die GOP-Größe ein.


    vstrict=0 Diese Einstellung sorgt dafür das SAP's den späteren Film einwandfrei abspielen können. Ohne dies Einstellung werden wohl inkorrekte Stream erzeugt.. (Mehr habe ich über diese Einstellung auch noch nicht herausgefunden)


    vrc_buf_size=1835 Puffergröße in kBit (Durchlauf 1/2). Für MPEG-1/2 setzt dies außerdem die vbv-Puffergröße. Der VBV Puffer ist wichtig damit der spätere Film sauber abgespielt werden kann.


    vrc_minrate=2000 Legt die min. Bitrate fest.


    vrc_maxrate=8000 Legt die max. Bitrate fest.


    turbo Beschleunigt den ersten pass.


    -ofps Setzt die Framerate fest. Für Pal 25


    Die jetzt folgenden Optionen müssen nicht gesetzt werden. Sie sollen aber die Qualität erhöhen, was aber noch getestet werden muss. Die unten angegebenen Werte sind als Beispiel zu sehen und sollten nicht 1 zu 1 übernommen werden. Wenn du diese Werte verändern willst ist ein Blick in die mencoder man unverzichtbar.


    trell Trellis-Quantisierung. Hiermit wird die optimale Encodierung für jeden 8x8-Block gefunden. Die Trellis-Quantisierung ist bei gegenseitiger Abschätzung von PSNR-Wert gegen die Bitrate optimal (unter der Annahme, dass durch die IDCT keine Rundungsfehler ins Spiel kommen − was natürlich nicht der Fall ist). Sie findet einfach einen Block für das Minimum von Fehler und lambda*Bits.


    mbd= Macroblock decision algorithm: Entscheidungsalgorithmus für Macro-Blocks (hohe Qualitätsstufe), encodiert jeden Macro-Block in allen Modi und wählt den besten aus. Dies ist zwar langsam, führt aber zu besserer Qualität und Dateigröße. Wenn mbd auf 1 oder 2 gesetzt ist, wird der mbcmp-Wert beim Vergleich von Macro-Blöcken ignoriert. Falls jedoch irgendeine Vergleichseinstellung (precmp, subcmp, cmp oder mbcmp) ungleich null ist, wird eine langsamere aber bessere Bewegungssuche verwendet, die auf halbe Pixel genau arbeitet. Dabei ist egal, auf welchen Wert mbd gesetzt wurde. Wenn qpel gesetzt ist, wird in jedem Falle auf Viertelpixel genaue Bewegungssuche verwendet.


    0 Benutze von mbcmp gegebene Vergleichsfunktion (Standard).


    1 Wählt denjenigen Modus für einen Macro-Block, der die wenigsten Bits benötigt (entspricht vhq).


    2 Wählt den Modus für einen Macro-Block mit der geringsten Ratenverzerrung


    precmp Setzt die Vergleichsfunktion für "pre pass"-Bewegungsabschätzung (siehe mbcmp für eine Liste der verfügbaren Vergleichsfunktionen) (Standard: 0).


    subcmp Setzt die Vergleichsfunktion für "sub pel"-Bewegungsabschätzung (siehe mbcmp für eine Liste der verfügbaren Vergleichsfunktionen) (Standard: 0)


    cmp Setzt die Vergleichsfunktion für "full pel"-Bewegungsabschätzung (siehe mbcmp für eine Liste der verfügbaren Vergleichsfunktionen) (Standard: 0)


    dia Rautentyp und -größe für die Bewegungsabschätzung. Bewegungsabschätzung ist ein iterativer Prozess. Eine kleine Raute zu benutzen begrenzt die Suche nicht auf das Auffinden von nur kleinen Motion-Vectors. Es ist nur irgendwie wahrscheinlicher, dass die Suche anhält, bevor der beste Motion-Vector gefunden wurde − vor allem, wenn Rauschen involviert ist. Größere Rauten erlauben eine ausgedehntere Suche nach dem besten Motion-Vector, welche daher langsamer ist, dafür aber zu einem besseren Ergebnis führt.
    Große normale Rauten sind qualitativ besser als an das Muster anpassende ("shape adaptive") Rauten. An das Muster anpassende Rauten sind ein guter Kompromiss zwischen Geschwindigkeit und Qualität.


    predia Rautentyp und -größe für "pre pass"-Bewegungsabschätzung


    cbp Ratenverzerrtes optimal codiertes Blockmuster (coded block pattern). Wird dasjenige codierte Blockmuster auswählen, das Verzerrung + lambda*Rate minimiert. Dies kann nur zusammen mit der Trellis-Quantisierung benutzt werden.


    mv0 Versuche jeden Macroblock mit Motion-Vector=<0,0> zu encodieren und wähle den besseren. Dies hat keinen Effekt, falls mbd=0


    vqmin minimaler Quantisierungsparameter (Durchlauf 1/2)


    1 Nicht empfohlen (viel größere Datei, geringer Qualitätsunterschied und seltsame Seiteneffekte: msmpeg4 und h263 werden eine sehr geringe Qualität liefern und die Bitratenkontrolle wird verwirrt sein, was auch eine geringere Qualität zur Folge hat; manche Decoder werden es nicht decodieren können).


    2 Empfohlen für normales Encodieren mit mpeg4/mpeg1video (Standard).


    3 Empfohlen für h263(p)/msmpeg4. Der Grund dafür, 3 dem Wert 2 vorzuziehen ist, dass 2 zu Overflows führen kann. (Dies wird zukünftig für h263(p) korrigiert werden, indem der Quantisierungsparameter pro Macro-Block geändert wird; msmpeg4 kann nicht korrigiert werden, da es dies nicht unterstützt.


    lmin Minimaler Frame-Level basierter Lagrange-Multiplikator für die Bitratenkontrolle (Standard: 2.0). Lavc wird Quantisierungparameter, die unter dem Wert für lmin liegen, kaum verwenden. Ein niedriger Wert für lmin bewirkt, dass lavc für manche Frames eher niedrigere Quantisierungsparameter verwendet, jedoch nicht niedriger als der angegebene Wert für vqmin. Entsprechend wird ein größerer Wert für lmin bewirken, dass lavc niedrige Quantisierungsparameter eher nicht verwendet, auch wenn vqmin diese erlaubt hätte. Vermutlich willst du lmin ungefähr gleich vqmin setzen. Wenn adaptive Quantisierung verwendet wird, wirkt sich die Änderung von lmin/lmax weniger stark aus.


    dc Intra-DC-Genauigkeit in Bits (Standard: 8). Wenn du vcodec=mpeg2video angibst, kann dieser Wert 8, 9, 10 oder 11 sein.


    Audio Optionen:


    acodec Hier stellst du den Audiocodec ein.


    abitrate Hier die gewünschte Bitrate.


    lavcresample Ändert die Samplerate des Audiostreams

  • Hallo,


    Einige Verbesserungsvorschläge.


    Zum erstellen von Mpeg2 würde ich bei Mencoder den aspect besser immer einstellen.
    Die Einstellung autoaspect funktioniert bei Mpeg-4 einwandfrei, ist aber nicht für Mpeg2 geeignet.


    vstrict ist meines Wissens nicht notwendig.
    vstrict=0 bedeutet eigentlich auch das die Funktion Deaktiviert ist.


    Bei Mpeg2 Pal keyint=15 benutzen.


    und der Parameter srate ist bei Mpeg2 eigentlich nicht notwendig, stellt Mencoder bei Mpeg2 automatisch ein.

  • Hallo,

    Zitat

    Zum erstellen von Mpeg2 würde ich bei Mencoder den aspect besser immer einstellen.
    Die Einstellung autoaspect funktioniert bei Mpeg-4 einwandfrei, ist aber nicht für Mpeg2 geeignet.


    Da gibt es verschiedene Aussagen zu, ich werde aber oben drauf hinweisen das autoaspect nur ein "Notnagel" ist. Vielleicht sollte man mal schreiben wie z.B. mit avidemux die Auflösung ermitteln kann und dann diese Werte auf das Script überträgt.

    Zitat

    vstrict ist meines Wissens nicht notwendig.
    vstrict=0 bedeutet eigentlich auch das die Funktion Deaktiviert ist.


    Da gibt es auch sehr unterschiedliche Aussagen zu, ich hab es mal mit rein genommen auch wenn es deaktiviert ist. Schaden kann es nicht.

    Zitat

    und der Parameter srate ist bei Mpeg2 eigentlich nicht notwendig, stellt Mencoder bei Mpeg2 automatisch ein.


    Stimmt, der Eintrag ist ein überbleibsel aus diversen Versuchen.

  • Matrix austauschen


    Der Mencoder benutzt als Default-Matrix die MPEG-Standard Matrix, was auch nicht schlimm ist mit dieser Matrix fährt man in den meisten Fällen sehr gut. Hin und Wieder benötigt man aber auch andere Matrizen z.B. für Zeichentrick usw..


    Auch das lässt sich ohne weiters mit dem mencoder händeln, man erweitert das Script unter -lavcopts um die Einträge:


    intra_matrix=


    inter_matrix= (Allgemein als non-intra bezeichnet)


    Das Script sieht dann, mit einer HClow Matrix, so aus:


    <table style="width: 98%; table-layout: fixed;" align="center"> <tbody><tr> <td> <table style="width: 100%;" class="tableinborder" cellpadding="4" cellspacing="1"> <tbody><tr class="smallfont"> <td class="tablecat" colspan="2">code:</td> </tr> <tr class="smallfont"> <td class="inposttable" align="right" nowrap="nowrap">
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    </pre></td> <td class="inposttable" style="width: 100%;" align="left" nowrap="nowrap" valign="top">
    #!/bin/bash
    mencoder \
    /home/morpheus/Test.avi \
    -of mpeg \
    -ovc lavc -lavcopts vcodec=mpeg2video:aspect=4/3:vpass=1:vrc_buf_size=1835:vrc_minrate=2000:\
    vrc_maxrate=8000:vbitrate=5000:intra_matrix=8,16,17,18,20,22,26,32,16,16,17,20,22,26,30,36,17,17,18,22,26,30,36,40,18,20,22,26,30,36,40,48,20,22,26,30,36,40,48,56,22,26,30,\
    36,40,48,56,72,26,30,36,40,48,56,72,96,32,36,40,48,56,72,96,108:inter_matrix=16,16,17,18,19,20,22,24,16,16,17,19,20,22,24,26,17,17,17,20,22,24,26,30,18,19,20,22,24,26,30,36,19,20,\
    22,24,26,30,36,40,20,22,24,26,30,36,40,48,22,24,26,30,36,40,48,56,24,26,30,36,40,48,56,64:keyint=12:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10:vstrict=0:turbo -ofps 25 \
    -mpegopts format=dvd:tsaf \
    -srate 48000 \
    -sws 7 \
    -vf scale=720:448,expand=720:576,harddup \
    -oac lavc -lavcopts acodec=ac3:abitrate=192 \
    -af lavcresample=48000 \
    -o /home/morpheus/.Trash/1.mpg \
    && \
    sleep 30 ; mencoder \
    /home/morpheus/Test.avi \
    -of mpeg \
    -ovc lavc -lavcopts vcodec=mpeg2video:aspect=4/3:vpass=2:vrc_buf_size=1835:vrc_minrate=2000:\
    vrc_maxrate=8000:vbitrate=5000:intra_matrix=8,16,17,18,20,22,26,32,16,16,17,20,22,26,30,36,17,17,18,22,26,30,36,40,18,20,22,26,30,36,40,48,20,22,26,30,36,40,48,56,22,26,30,\
    36,40,48,56,72,26,30,36,40,48,56,72,96,32,36,40,48,56,72,96,108:inter_matrix=16,16,17,18,19,20,22,24,16,16,17,19,20,22,24,26,17,17,17,20,22,24,26,30,18,19,20,22,24,26,30,36,19,20,\
    22,24,26,30,36,40,20,22,24,26,30,36,40,48,22,24,26,30,36,40,48,56,24,26,30,36,40,48,56,64:keyint=12:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10:vstrict=0 -ofps 25 \
    -mpegopts format=dvd:tsaf \
    -srate 48000 \
    -sws 7 \
    -vf scale=720:448,expand=720:576,harddup \
    -oac lavc -lavcopts acodec=ac3:abitrate=192 \
    -af lavcresample=48000 \
    -o /home/morpheus/Videos/Test.mpg</pre></td> </tr> </tbody></table>
    </td> </tr> </tbody></table>

  • keyint=12 - 15 kann man natürlich benutzen, aber 15 spart etwas Bitrate und entspricht der PAL Norm.


    Meine aussage autoaspect währe für Mpeg2 nicht geeignet gilt anscheinend nur für Ältere Versionen.
    Mit neueren Versionen macht es anscheinend keine Probleme.
    Werde ich noch genauer Testen :)


    Den Parameter sws 7 benötigt man eigentlich auch nicht unbedingt, ich würde sws 2 benutzen oder einfach weglassen.
    Mencoder benutzt dann bicubic finde ich persönlich am besten.


    Mit der Matrix habe ich auch schon experimentiert aber die unterschiede sind so gering braucht man eigentlich
    nicht zu ändern, auch mit der Standard Matrix sind die Ergebnisse sehr gut.


    Der Parameter vstrict ist meines Wissens eigentlich für experimentelle Codecs gedacht.

  • Hallo,

    Zitat

    Den Parameter sws 7 benötigt man eigentlich auch nicht unbedingt, ich würde sws 2 benutzen oder einfach weglassen.
    Mencoder benutzt dann bicubic finde ich persönlich am besten.

    Also das sehe ich ganz anders ich bevorzuge Lanczos oder gauss. Gauss hat auch noch den Vorteil man kann die Schärfe einstellen (wenn man es den hinbekommt, leider wirft der mencoder immer eine Fehlermeldung aus wenn ich die Option setze). Was unter Umständen einen weiteren Schärfefilter unnötig macht.


    Zitat

    Mit der Matrix habe ich auch schon experimentiert aber die unterschiede sind so gering braucht man eigentlich
    nicht zu ändern, auch mit der Standard Matrix sind die Ergebnisse sehr gut.

    Auch hier muss ich wiedersprechen, die MPEG-Standard ist bestimmt nicht schlecht und in den meisten Fällen auch ausreichend aber hin und wieder benötigt man eine andere Matrix, ich benutze auch gerne die HC Matrix. Aber das muss jeder selber wissen bzw. testen.

  • In letzter Zeit habe ich mich kaum mit der Kommandline beschäftigt. ich sehe mir das nochmal genauer an.
    Es gibt sicherlich noch einiges was man verbessern kann. Aber das werde ich nochmal alles in ruhe testen.
    Der Parameter sws ist sicherlich für Mpeg4 recht sinnvoll.


    Bei srate hatte ich mich übrigens geirrt bei Mpeg2 benutzte ich -srate 48000 zusammen mit lavcresample=48000
    Bei Mpeg2 würde ich den Befehl -srate 48000 keinesfalls ändern.

  • Wenn man nicht alles selber macht ;)
    Ein Beispiel wie ich das mache.


    Auflösung Avi 704x288 AspectRate 704 / 288 = 2.444


    Auflösung für Mpeg berechnen 4:3 PAL > 768 / 2.444 = 314 > scale=720:314,expand=0:576,crop=720:576
    Auflösung für Mpeg berechnen 16:9 PAL > 1024 / 2.444 = 418 > scale=720:418,expand=0:576,crop=720:576


    Scale = Auflösung des Videos expand= Schwarze Balken anfügen crop= Zur Sicherheit


    Kommandline ( VBR ) für 1-Pass, vbitrate bei bedarf anpassen.
    Für eine kurze Vorschau einfach den Parameter -ss 150 -endpos 20 an die Kommandline anfügen.


    PHP
    1. Mencoder "Video.avi" -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:314,expand=0:576,crop=720:576,softskip,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=4000:keyint=15:mbd=2:trell:acodec=ac3:abitrate=192:aspect=4/3:threads=4 -ofps 25 -o "Video.mpg"


    Kommandline für 2-Pass


    PHP
    1. Mencoder "Video.avi" -nosound -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:314,expand=0:576,crop=720:576,softskip,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=4000:keyint=15:mbd=2:trell:turbo:aspect=4/3:threads=4:vpass=1 -ofps 25 -o nul
    2. Mencoder "Video.avi" -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:314,expand=0:576,crop=720:576,softskip,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=4000:keyint=15:mbd=2:trell:acodec=ac3:abitrate=192:aspect=4/3:threads=4:vpass=2 -ofps 25 -o "Video.mpg"


    Bei Linux statt -o nul > -o /dev/null schreiben :)


    keyint=15 Entspricht der PAL Norm, spart etwas Bitrate die dann besser für schnelle Action-Szenen verwendet wird.


    Wer einen schnellen Rechner besitzt kann statt :mbd=2:trell zur verbesserung der Qualität Folgenden Parameter benutzen.
    :trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10


    Die GOP ist nicht geschlossen, also nicht wundern falls ein Programm jammert ist nicht so schlimm.
    Bedeutet die Karpitelmarken werden eventuell nicht genau funktionieren.

  • Hallo,


    hast du schon unsharp ausprobiert?


    Edit:

  • Ja, aber ehrlich gesagt ist mir das zu unintuitive, werde ich aber noch mal testen. :)
    Hast Du eine Ahnung warum '-vf scale -ssf ls=90:cs=90' keinen Effekt hat?


    Hab mir überlegt, dass man unsharp eventuell auf zwei Parameter eingrenzen könnte: (für mein sx264)
    1. Radius mit Auswahl: min: 3x3, medium: 7x7 und max: 13x11
    und
    2. Stärke als Double Spinbox von -1,5 bis 1,5
    Dann würden zwar luma und chroma immer gleich gehandelt, aber das wird die meisten Leute vermutlich nicht stören.
    Denke es verwirrt eher wenn ich alle Möglichkeiten zur Verfügung stellen würde.


    Auf jede Fall aber schon mal Danke für den Hinweis.


    Cu Selur


    Ps.: eine Idee zum Deblocking? (output ist bei mir rawvideo)

  • Hallo,

    Code
    1. Hast Du eine Ahnung warum '-vf scale -ssf ls=90:cs=90' keinen Effekt hat?

    Nein leider nicht, ich hab so scale noch nie benutzt.


    Was man vielleicht noch machen könnte wäre ein Resize mit gauss (-sws 7), wenn denn ein Resize gemacht wird.

    Code
    1. scale[=b:h[:ilaced[:chr_drop[:par[:par2[:presize[:noup[:arnd]]]]]]]]] Skaliert das Bild mit dem Softwareskalierer (langsam) und führt eine Farbraumkonvertierung zwischen YUV und RGB durch (siehe auch -sws)........ ..... ......:[:] (siehe auch -sws) Setzt einige Skalierungsparameter abhängig vom Skalier- er, der mit -sws gewählt wurde. -sws 2 (bicubisch): B (weichzeichnend) und C (verstärkend) 0.00:0.60 Standard 0.00:0.75 "precise bicubic" von VirtualDub 0.00:0.50 Catmull-Rom spline 0.33:0.33 Mitchell-Netravali spline 1.00:0.00 cubic B-spline -sws 7 (gaussian): Schärfe (0 (weich) - 100 (scharf)) -sws 9 (lanczos): Filterlänge (1-10)


    Code
    1. Dann würden zwar luma und chroma immer gleich gehandelt, aber das wird die meisten Leute vermutlich nicht stören.

    Ich denke auch das es keinen stören wird.

    Code
    1. eine Idee zum Deblocking? (output ist bei mir rawvideo)

    Nein leider nicht, damit habe ich mich noch nicht beschäftigt.