mencoder
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| mencoder [2014-11-09 13:23:56] – manfred | mencoder [2020-06-22 17:39:32] (aktuell) – manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Mencoder ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Leider wird der MPlayer/ | ||
| + | weil es zu wenig Leute im Team gibt. | ||
| + | |||
| + | |||
| + | ===== Daumenkino mit MEncoder ===== | ||
| + | |||
| + | Zum Beispiel so zu einem DivX 5 - Film: | ||
| + | |||
| + | # mencoder " | ||
| + | |||
| + | oder auch so zu einem MJPEG-Film: | ||
| + | |||
| + | # mencoder " | ||
| + | |||
| + | Andere Codec' | ||
| + | |||
| + | |||
| + | ===== allgemeines ===== | ||
| + | |||
| + | Möchte man den Film erst ab einer bestimmten Stelle ansehen, | ||
| + | dann ist die Option **'' | ||
| + | Mit ihr wird angegeben, welche Zeitspanne übersprungen werden soll, | ||
| + | __allerdings funktioniert sie nur dann, wenn MEncoder seine Video-Daten | ||
| + | aus eine Datei liest! | ||
| + | Werden die Video-Daten durch eine Pipe an MEncoder übergeben, | ||
| + | dann funktioniert diese Option nicht!__ | ||
| + | |||
| + | Möchte man nur eine bestimmte Zeitspanne sehen, | ||
| + | dann ist die Option **'' | ||
| + | __Diese Option funktioniert auch bei Verwendung einer Pipe.__ | ||
| + | |||
| + | |||
| + | ===== Audio-Spur extrahieren ===== | ||
| + | |||
| + | Lib-AV-Code + Lib-AV-Container (das funktioniert aber leider nicht): | ||
| + | # mencoder Film.avi -ovc frameno -oac lavc -lavcopts acodec=pcm_s16le: | ||
| + | |||
| + | nativer Code + nativem Container: | ||
| + | # mencoder Film.avi -ovc frameno -oac pcm -o Ton.avi | ||
| + | |||
| + | Unter diesen Bedingungen bringt der Einsatz von //'' | ||
| + | da man ja sowieso nocheinmal den //'' | ||
| + | |||
| + | Anders sieht es aus, wenn man nur einen Ausschnitt braucht (z.B.: von der 5855. Sekunde 373 Sekunden lang): | ||
| + | # mencoder Film.avi -ss 5855 -endpos 373 -ovc frameno -oac pcm -o Ton.avi | ||
| + | |||
| + | dann die Tonspur mit MPlayer in einen WAVE-Container dumpen und bei Erfolg die AVI-Zwischendatei löschen: | ||
| + | # mplayer Ton.avi -forceidx -vo null -dumpaudio -dumpfile Ton.wav && rm Ton.avi | ||
| + | |||
| + | |||
| + | ===== Video-Spur extrahieren ===== | ||
| + | |||
| + | verlusstfrei und unkomprimierte Video-Spur in einen AVI-Container schreiben, allerdings wird die Datei dann riesengroß: | ||
| + | # mencoder Film.avi -nosound -ovc raw -noskip -vf scale, | ||
| + | |||
| + | verlusstfrei und mit FFv1 komprimierte Video-Spur in einen AVI-Container schreiben, mit FFv1 wird die Datei deutlich kleiner (7-8 mal kleiner): | ||
| + | # mencoder Film.avi -nosound -ovc lavc -lavcopts vglobal=1: | ||
| + | |||
| + | unkomprimierte Video-Spur (mit Deinterlacing-Filter) in eine Pipe schreiben: | ||
| + | # mencoder Film.avi -nosound -ovc raw -noskip -vf pp=ci/ | ||
| + | # mencoder Film.avi -nosound -ovc raw -noskip -vf pp=ci/ | ||
| + | |||
| + | |||
| + | ===== Film zuschneiden ===== | ||
| + | |||
| + | siehe auch: [[FFmpeg# | ||
| + | |||
| + | Die **Startposition** wird mit der Option **" | ||
| + | |||
| + | Zeiten in Stunden: | ||
| + | # 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 | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | 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, | ||
| + | Es ist auch möglich " | ||
| + | |||
| + | **Hiermit wird nicht " | ||
| + | |||
| + | 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 4_Folgen.mpg -forceidx -ovc copy -oac copy -o 4_Folgen_neuer_Index.avi | ||
| + | |||
| + | Jetzt kann man mit einem Videoplayer, | ||
| + | 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 4_Folgen_neuer_Index.avi -forceidx -ovc copy -oac copy -ss 00:00:00 -endpos 00:19:20 -o Folge_1.avi | ||
| + | # mencoder 4_Folgen_neuer_Index.avi -forceidx -ovc copy -oac copy -ss 00:19:20 -endpos 00:19:20 -o Folge_2.avi | ||
| + | # mencoder 4_Folgen_neuer_Index.avi -forceidx -ovc copy -oac copy -ss 00:38:40 -endpos 00:19:20 -o Folge_3.avi | ||
| + | # mencoder 4_Folgen_neuer_Index.avi -forceidx -ovc copy -oac copy -ss 00:58:00 -endpos 00:19:20 -o Folge_4.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 4_Folgen.mp4 -forceidx -ovc copy -oac copy -of lavf -lavfopts format=matroska -o 4_Folgen_neuer_Index.mkv | ||
| + | # mencoder 4_Folgen_neuer_Index.mkv -forceidx -ovc copy -oac copy -ss 00:00:00 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_1.mkv | ||
| + | # mencoder 4_Folgen_neuer_Index.mkv -forceidx -ovc copy -oac copy -ss 00:19:20 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_2.mkv | ||
| + | # mencoder 4_Folgen_neuer_Index.mkv -forceidx -ovc copy -oac copy -ss 00:38:40 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_3.mkv | ||
| + | # mencoder 4_Folgen_neuer_Index.mkv -forceidx -ovc copy -oac copy -ss 00:58:00 -endpos 00:19:20 -of lavf -lavfopts format=matroska -o Folge_4.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 ==== | ||
| + | |||
| + | |||
| + | === ein Denkmodel mal durchgespielt === | ||
| + | |||
| + | Wenn ich den Index neu schreiben muss, kann ich das nur mit dem MEncoder tun. | ||
| + | |||
| + | Leider muss ich dann aber auch eine AID angeben und dann kann ich ja die | ||
| + | Tonspur auch gleich ins PCM-Format überführen, | ||
| + | der weiteren benötigten Programme etwas flexibeler. | ||
| + | |||
| + | Leider kann MEncoder das nicht mit jedem Container. | ||
| + | |||
| + | //Zum Beispiel verwende ich mit Vorliebe den Matroska-Container:// | ||
| + | # mencoder Testfilm.mkv -forceidx -mc 0 -noskip -vf scale, | ||
| + | ... | ||
| + | videocodec: framecopy (716x428 0bpp fourcc=34363248) | ||
| + | VIDEO CODEC ID: 28 | ||
| + | AUDIO CODEC ID: 2e, TAG: 0 | ||
| + | Writing header... | ||
| + | [matroska @ 0x7f47585a3940]Codec for stream 0 does not use global headers but container format requires global headers | ||
| + | [matroska @ 0x7f47585a3940]Codec for stream 1 does not use global headers but container format requires global headers | ||
| + | [matroska @ 0x7f47585a3940]No wav codec ID found. | ||
| + | Gleitkomma-Ausnahme (Speicherabzug geschrieben) | ||
| + | |||
| + | //Dann beschwert MEncoder sich darüber, dass der Container einen " | ||
| + | Den kann man auch mit der Lib-AV schreiben, nur dann muss man als Video-Ausgabe-Codec einen Lib-AV-Codec verwenden... | ||
| + | und da gibt es zwar verlusstfreie Codecs aber keinen " | ||
| + | Transcodiervorgang durchzuführen der auch immer mit einem Qualitätsverlusst verbunden ist. | ||
| + | Und dann darf man nicht vergessen, auch die Audio-Spur muss dann mit einem Lib-AV-Codec nocheinmal transcodiert werden:// | ||
| + | # mencoder Testfilm.mkv -forceidx -mc 0 -noskip -vf scale, | ||
| + | |||
| + | //Nur leider funktioniert das beim MEncoder nicht richtig, sobald man die Audio-Spur per Lib-AV in das PCM-Format (Standard-Wave-Codec) | ||
| + | umrechnen lässt (-oac lavc -lavcopts acodec=pcm_s16le: | ||
| + | Selbst dieses einfache Kommando hat diesen Effekt:// | ||
| + | # mencoder Testfilm.mkv -ovc frameno -oac lavc -lavcopts acodec=pcm_s16le -of avi -o z.avi | ||
| + | |||
| + | Wenn ich also den AVI-Container verwende um Problemen vorzubeugen (denn der wird von MEncoder am besten unterstützt), | ||
| + | dann muss ich auch einen Video-Codec wählen, der vom AVI-Container und vom MEncoder unterstützt wird. | ||
| + | Am besten ist er noch verlustfrei, | ||
| + | |||
| + | Hier mal ein paar Tests mit verlusstfreien Video-Formaten (ich habe die Tests mit __" | ||
| + | |||
| + | Das Test-Video (Testfilm.mkv) ist 79MB groß und enthält eine AVC-Video-Spur (ähnlich wie BluRay) und eine AAC-Audio-Spur. | ||
| + | |||
| + | Als verlustfreies und vom AVI-Container sowie vom MEncoder unterstütztes (Zwischen-)Format verwende ich hier den Lib-AV-Codec " | ||
| + | # mencoder Testfilm.mkv -forceidx -mc 0 -noskip -vf scale, | ||
| + | |||
| + | Die neue Zwischenfilmdatei " | ||
| + | |||
| + | Als verlustfreies und vom AVI-Container sowie vom MEncoder unterstütztes (Zwischen-)Format verwende ich hier den verbreiteten Codec " | ||
| + | # mencoder Testfilm.mkv -forceidx -mc 0 -noskip -vf scale, | ||
| + | |||
| + | Die neue Zwischenfilmdatei " | ||
| + | |||
| + | Oder ich lasse die Videospur aus dieser Zwischendatei einfach raus, dann ist die " | ||
| + | # mencoder Testfilm.mkv -ovc frameno -oac pcm -of avi -o Ton.avi | ||
| + | |||
| + | |||
| + | ===== Hinweis ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Will man eine DVD encoden, braucht man die Option **-ofps 24000/ | ||
| + | |||
| + | 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: | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== 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 (" | ||
| + | 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 [[:: | ||
| + | |||
| + | 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, | ||
| + | |||
| + | 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 [[multimedia# | ||
| + | |||
| + | 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, | ||
| + | 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 ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== 1-Pass ==== | ||
| + | |||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts crf=25: | ||
| + | |||
| + | |||
| + | ==== 2-Pass ==== | ||
| + | |||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=1: | ||
| + | | ||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=2: | ||
| + | |||
| + | |||
| + | ==== Multi-Pass ==== | ||
| + | |||
| + | Der mittlere Aufruf mit **pass=3**, kann beliebig oft ausgeführt werden. | ||
| + | |||
| + | Der erste und der Letzte Aufruf ist mit denen aus " | ||
| + | |||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=1: | ||
| + | | ||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=3: | ||
| + | | ||
| + | mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 ALTERFILM.mpg -ovc x264 -x264encopts pass=2: | ||
| + | |||
| + | |||
| + | ==== 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 " | ||
| + | " | ||
| + | |||
| + | **Aus dem Grund ist es zur Zeit schon absolut unmöglich mit dem MEncoder direkt Blu-Ray-kompatible Filme zu erstellen, denn die Option " | ||
| + | |||
| + | 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. **[[x264# | ||
| + | |||
| + | 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=" | ||
| + | | ||
| + | # 1280x720 (720p) / Blu-Ray / Level 4.0 (kleines HD-Profil) | ||
| + | X264OPTIONEN=" | ||
| + | | ||
| + | # 1280x720 (720p) / DVD / Level 4.0 (kleinstes HD-Profil) | ||
| + | X264OPTIONEN=" | ||
| + | | ||
| + | # 720x576 / DVD / Level 3.0 (PAL; SD-Profil: halbiert den Platzbedarf einer Standard-DVD, | ||
| + | X264OPTIONEN=" | ||
| + | |||
| + | Die Kommandos im Folgenden sind nur Beispiele, im speziellen Fall muss man die Optionen " | ||
| + | |||
| + | Der Parameter " | ||
| + | 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), | ||
| + | |||
| + | # mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23: | ||
| + | |||
| + | Aber, wie unter " | ||
| + | |||
| + | Will man keinen großen Aufstand machen und kann auf die Blu-Ray-Kompatibilität verzichten, dann kann man folgendes Kommando verwenden: | ||
| + | |||
| + | # export BITRATE=" | ||
| + | # mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23: | ||
| + | |||
| + | 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: [[filme_transkodieren# | ||
| + | |||
| + | |||
| + | === Beispiele === | ||
| + | |||
| + | 1920x1080 / 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: | ||
| + | |||
| + | 1280x720 (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: | ||
| + | |||
| + | 1280x720 (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: | ||
| + | |||
| + | 720x576 / DVD / Level 3.0 (kleinstes SD-Profil: halbiert den Platzbedarf einer Standard-DVD, | ||
| + | # mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23: | ||
| + | |||
| + | 720x576 => 352x216 / DVD / Level 3.0: | ||
| + | # mencoder -mc 0 -forceidx -aspect 16:9 -aid 128 alter_Film.avi -ovc x264 -x264encopts crf=23: | ||
| + | |||
