Ich wollte nur ein Beispiel bringen, das nicht ffmpeg-typisch endlos lang ist. Deshalb das simple "copy" statt komplizierter Filterkettensyntax.
Der tatsächliche Einsatzzweck ist eine ebu_r128 Codierung von zwei Tonspuren. Nun wollte ich die Videofilter (crop, resize, aspekt) ebenfalls in den filter_complex hängen, weil dann das Script einfacher zu bauen wäre.
Es funktioniert, wenn ich NUR die beiden Audiospuren im filter_complex halte ("0 : a : 0" und "0 : a : 1" [spaces wegen Forensyntax eingefügt] mit je unterschiedlichen Startwerten für das ebu_r128). Die Videospur filtere ich extra in einer "-vf" Chain.
Sobald ich jedoch Video und Audio gleichzeitig in filter_complex schreibe (egal ob mit/ohne Output und/oder Mapping) wirft ffmpeg ab der zweiten Spur o.g. Fehlermeldung. Gemäß der
Doku (falls ich die nicht völlig falsch verstehe¹) sollte es eigentlich möglich sein, allerspätestens mit
Code: Alles auswählen
-filter_complex "[0:v:0]videofilter[v0]; [0:a:0]audiofilter1[a0]; [0:a:1]audiofilter2[a1]" -map v0 -map a0 -map a1 outfile.mkv
Es läuft aber bereits mit
Code: Alles auswählen
-filter_complex "[0:a:0]audiofilter1; [0:a:1]audiofilter2" outfile.mkv
Beide Audiostreams werden wie gewünscht ins outfile geschrieben, ganz ohne mapping. Sobald jedoch eine Videospur mit drin ist geht nichts mehr. Auch nicht, wenn die Videospur einen eigenen filter_complex bekommt.
---
¹ Die Input-Streams im filter_complex können, müssen aber nicht miteinander verheiratet werden. Parallele Ausgabe (zum Muxen im Zielcontainer) ist also möglich. Mit zwei unabhängigen Audiospuren funktioniert es ja bereits.
---
PS: Doppelpunkte und Strichpunkte sind hier optisch kaum voneinander zu unterscheiden. Ist das bei euch auch so?