Untertitel mit ffmpeg in einen RTMP-Stream mit einem mkv mit eingebetteten .ass-Untertiteln brennen

965
KittiMeer

Ich habe mir die Haare ausgezogen und versucht herauszufinden, wie ich das erreichen kann. Ich habe Videodateien, die ich über RTMP mit ffmpeg streame, in die ich eingebettete (?) .Ass-Untertitel brennen möchte. Ich habe es mit bildbasierten Untertiteln gut gemacht, aber .ass war in den letzten Monaten der Fluch meiner Existenz und ich habe gerade aufgegeben. Ich bin sehr neu im Streaming und lerne immer noch, und trotz aller Anleitungen und allem, was ich online gelesen habe, kann ich es einfach nicht schaffen.

Hier ist ein Teil einer Beispieldatei:

Duration: 00:24:37.51, start: 0.000000, bitrate: 1674 kb/s Chapter #0:0: start 0.000000, end 1354.895000 Metadata: title : Main Chapter #0:1: start 0.000000, end 90.000000 Metadata: title : ED Chapter #0:2: start 1354.979000, end 1386.969000 Metadata: title : Preview Stream #0:0(eng): Video: h264 (High), yuv420p, 704x480 [SAR 1:1 DAR 22:15], SAR 10:11 DAR 4:3, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (defaul Stream #0:1(eng): Audio: aac (LC), 44100 Hz, 5.1, fltp (default) Metadata: title : AAC 5.1 Stream #0:2(jpn): Audio: aac (LC), 44100 Hz, 5.1, fltp Metadata: title : AAC 5.1 Stream #0:3(eng): Subtitle: ass (default) Metadata: title : OP/ED Stream #0:4(eng): Subtitle: ass Metadata: title : Full 

Ich habe ein Skript, das bereits bildbasierte Untertitel ausführen kann, wenn ich:

-filter_complex "[0:v][0:6]overlay=(W-w)/2:H-h[v]" \ -map "[v]" \ -map 0:2 \ 

Ich bin dann zu einer vorherigen Vorlage zurückgegangen und habe gefunden:

-vf subtitles="$i":force_style='FontName=DejaVu  Sans':force_style='Fontsize=15' \ 

Das funktioniert aber immer noch nicht. Ich habe versucht, es unmittelbar nach der Eingabe und vor der Ausgabe zu platzieren. Es funktioniert immer noch nichts wie ich gehofft habe und alles was ich bekomme sind Antworten wie diese:

[Parsed_subtitles_0 @ 0x209c1a0] Unable to open [file].mkv [AVFilterGraph @ 0x208e7c0] Error initializing filter 'subtitles' with args  '[file].mkv:force_style=FontName=DejaVu 

Wenn weitere Informationen benötigt werden, gebe ich sie gerne an. Auch hier bin ich neu und weiß gar nicht, ob ich jetzt die richtigen Informationen gebe ... Dies ist mein letzter Ausweg, da ich versucht habe, Anleitungen zu lesen, aber nichts scheint spezifisch zu sein was ich versuche zu tun Ich habe fast 5 Monate gebraucht, um herauszufinden, wie man bildbasierte Untertitel zum Laufen bringt ... Jede Hilfe wird geschätzt. Vielen Dank.

AKTUALISIEREN

Nachdem ich mich mit den verschiedensten Befehlen herumgeschraubt hatte, begann ich mit dem Entfernen

:force_style='Fontsize=15' 

von der Zeile oben. Untertitel werden jetzt im Stream angezeigt, aber ich kann nicht herausfinden, wie der Untertitelstream angezeigt werden soll. Ich habe mit -map versucht, es zu erzwingen, aber bekomme:

 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #0:2 -> #0:1 (aac (native) -> aac (libfdk_aac)) Stream #0:4 -> #0:2 (ass (native) -> ? (?)) 

Das habe ich auch versucht, was ich bei einer Suche gefunden habe

 -vf subtitles="$i":si=4 

anscheinend sollte ich mich für den alternativen Untertitel-Stream entscheiden, was aber nur zu einem Fehler führte

[Parsed_subtitles_0 @ 0x15720c0] Unable to locate subtitle stream in Trigun.S01E01.The.60.Billion.Double.Doll‌​ar.Man.mkv [AVFilterGraph @ 0x14f1360] Error initializing filter 'subtitles' with args 'Trigun.S01E01.The.60.Billion.Double.Doll‌ar.Man.mkv:si=4:force_style=FontName=DejaVu Sans' 

also ... ja? ein bisschen Fortschritt?

LETZTES UPDATE!

Ich war nahe dran, brauchte jedoch einige Klarstellungen, um dieses Problem zu lösen.

si= 

War richtig, aber ich dachte, ich müsste 4 als fünften Stream in der Datei angeben, als ich tatsächlich 1 geben musste, um den zweiten Untertitel-Stream auszuwählen ...

 -vf subtitles="$i":si=1:force_style='FontName=DejaVu Sans' 

funktioniert einwandfrei und ich habe die richtigen Untertitel direkt in den Stream gebrannt.

Als Referenz verwende ich hier:

ffmpeg -re -i [file].mkv -map 0:v -map 0:2 -vf subtitles="$i":si=1:force_style='FontName=DejaVu Sans' -c:v libx264 -pix_fmt yuv420p -profile:v high -preset veryfast -crf 23 -maxrate 1.5M -bufsize 2.5M -threads 0 -c:a libfdk_aac -ac 2 -af "volume5.5" -f flv -b:v 900k -maxrate 1.5M -bufsize 2M rtmp://[server]/[mountpoint]/[key] 

Ich arbeite weiter und stelle nach Bedarf ein. Zum Beispiel wurde die Lautstärke hinzugefügt, weil viele Videos, auf die ich stoße, sehr leisen Ton haben, vielleicht weil ich einen Mehrkanal-Track auf 2 Kanäle herunterkonvertiere. Trotzdem danke für die Hilfe! Ich hoffe, dass dies jemandem helfen kann, der Schwierigkeiten hat, dies selbst herauszufinden.

0
Dies ist wahrscheinlich eine Ausgabe der Zeichen im Dateinamen oder Pfad. Nennen Sie ein Beispiel. Gyan vor 6 Jahren 0
Die Datei lautet: kitti @ video: ~ / vids / anime / trigun / Trigun.S01E01.The.60.Billion.Double.Dollar.Man.mkv KittiMeer vor 6 Jahren 0
Verwenden Sie den vollständigen Pfad manuell und versuchen Sie es. (keine Variable subst) Gyan vor 6 Jahren 0
Habe das ausprobiert und trotzdem einen Fehler bekommen. Nachdem ich gestern den ganzen Tag ein paar Änderungen und Tests durchgeführt hatte, entfernte ich die `: force_style = 'Fontsize = 15' '. Nun werden Untertitel angezeigt. Da jedoch mehrere Untertitelspuren vorhanden sind, wird nur der Standardwert Stream 0: 3 ausgewählt . Ich kann nicht herausfinden, wie ich den Stream mit 0: 4 erzwingen kann. KittiMeer vor 6 Jahren 0
Das habe ich vermisst. Sie benötigen nur einen force_style. Trennen Sie mehrere Parameter durch ein Komma. Fügen Sie "si = 1" hinzu, um den 2. Teilstrom auszuwählen. Gyan vor 6 Jahren 0
Ok das war es! Ich wusste, dass es etwas schmerzhaftes Einfaches sein musste! `-vf subtitles =" $ i ": si = 1: force_style = 'FontName = DejaVu Sans' ist der Trick !! Vielen Dank! Ich frage mich nur, ob es eine Möglichkeit gibt, diese Variable ganz einfach in die automatischen englischen Untertitel umzuwandeln, aber bei einigen meiner anderen Dateien stelle ich fest, dass sie auch einen englischen Standard-Track haben, der nur angezeigt wird, wenn Text auf der CD erscheint Video, das übersetzt werden muss. Ich bin also mit diesem Ergebnis zufrieden. Danke noch einmal! KittiMeer vor 6 Jahren 0

0 Antworten auf die Frage