Beliebt

ffmpeg: Untertitel-Event kann nicht neu codiert werden - ffmpeg

Ich versuche Untertitel mit deutschen Umlauten in eine Videodatei zu kodieren - nach vielen Recherchen zu ffmpeg bin ich auf folgendes gekommen:

ffmpeg -fflags +genpts -i in.avi -i in1.srt -sub_charenc utf-8 -i in2.srt -c:s mov_text -c:v copy -c:a copy -map 0:v -map 0:a -map 1 -map 2 -metadata:s:s:0 language=english -metadata:s:s:1 language=german output.mp4

... aber es sagt mir, dass es nicht geht, weil

Unable to recode subtitle event "und geh├Ángt." from utf-8 to utf-8.5x

Fehler beim Dekodieren von Stream 2: 0: Ung├╝ltige Bytefolge

Kann mir jemand sagen, was daran falsch ist und wie man es richtig macht?

Danke vielmals!

Antworten:

1 f├╝r Antwort Ôäľ 1

Es gibt zwei M├Âglichkeiten, um Untertitel in ein Video einzuf├╝gen, oder zumindest die, die ich kenne.

  • Der erste ist das Einf├╝gen eines Strom in den Beh├Ąlter.
  • Der zweite ist zu brennen sie im Video.

Vorteile:

  • Wie Strom Sie k├Ânnen Untertitel aktivieren oder deaktivieren.
  • Wenn du Brennen Sie die Untertitel Sie stehen allen Spielern zur Verf├╝gung, ohne dass sie etwas konfigurieren m├╝ssen.

Nachteile:

  • Wie Strom Sie ben├Âtigen Unterst├╝tzung f├╝r den Video-Player, um diese Streams (Untertitel) zu erkennen. Bei den meisten wird diese Option empfohlen.
  • Wenn du Brennen Untertitel k├Ânnen nicht gel├Âscht oder deaktiviert werden.

Dies ist der Befehl zum Hinzuf├╝gen von Untertiteln als STREAMS:

ffmpeg -i input.mp4 -sub_charenc ISO-8859-1 -i input.srt -map 0: v -map 0: a -c copy -map 1 -c: s: 0 mov_text output.mp4

Hinweis: Sie m├╝ssen die richtige Art der Untertitelcodierung angeben und anstelle von ISO-8859-1 ersetzen.

F├╝hren Sie den folgenden Befehl aus, um die korrekte Kodierung Ihrer Untertitel zu ermitteln:

Datei your_subtitle.srt

Dies wird so etwas drucken
your_subtitle.srt: ISO-8859-Text mit CRLF-Zeilenabschluss

Dies ist der Befehl an Untertitel brennen:

ffmpeg -i input.mp4 -vf subtitles = sub_file.srt output.mp4

Weitere Informationen zu Streams, Codec und FFMPEG finden Sie unter:

FFMPEG Grundkurs
FFMPEG-Dokumentation
FFMPEG Man


0 f├╝r Antwort Ôäľ 2

Bestimmen Sie die Zeichenkodierung der Datei:

$ file in2.srt
in2.srt: ISO-8859 text, with CRLF line terminators

Jetzt benutzen -sub_charenc:

ffmpeg -fflags +genpts -i in.avi -i in1.srt -sub_charenc ISO-8859-1 -i in2.srt -c:s mov_text -c:v copy -c:a copy -map 0:v -map 0:a -map 1 -map 2 -metadata:s:s:0 language=english -metadata:s:s:1 language=german output.mp4

Beachten Sie die Aufnahme der -1 Teil von ISO-8859-1.

Oder konvertieren Sie die Zeichenkodierung mit iconv, oder ein anderes Tool, um utf8 und dann zu verwenden ffmpeg ohne zu brauchen -sub_charenc:

iconv -f ISO-8859-1 -t utf8 in2.srt > in3.srt