Ich versuche, einem .mp4-Container mit ffmpeg Textuntertitel hinzuzufügen:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4
Wenn ich versuche, diese Zeile auszuführen, wird eine Fehlermeldung angezeigt:
Die Anzahl der Stream-Maps muss mit der Anzahl der Ausgabestreams übereinstimmen.
Wenn ich versuche, mp4 in mkv zu ändern (obwohl mp4 Textuntertitel unterstützt), so:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv
Es ordnet die Streams korrekt zu, gibt jedoch einen Fehler aus:
Encoder (Codec-ID 94210) für Ausgabestream # 0.2 nicht gefunden
Wenn ich starte
ffmpeg -codecs
Ich kann sehen, dass der srt-Codec als Decoder und Encoder unterstützt wird, bin mir jedoch nicht sicher, was für die MP4- und MKV-Subs-Codierung verwendet wird und ob ich ihn einschalten oder separat kompilieren muss.
-c:s copy
nicht mit importiert werden-c:s mov_text
.HINWEIS: Diese Lösung "brennt die Untertitel" in das Video, sodass jeder Betrachter des Videos gezwungen ist, sie zu sehen.
Verwenden Sie die
libass
Bibliothek (stellen Sie sicher, dass Ihre ffmpeg-Installation die Bibliothek in der Konfiguration enthält--enable-libass
).Konvertieren Sie zuerst die Untertitel in das
.ass
Format:Fügen Sie sie dann mithilfe eines Videofilters hinzu:
quelle
libass
Erweiterungen, falls diese auf Debian-Systemen fehlen, mit "apt update && apt install libass-dev".Sie versuchen, Untertitel als Untertitel-Stream zu muxen. Es ist einfach, aber für MP4 (oder M4V) und MKV wird eine andere Syntax verwendet. In beiden Fällen müssen Sie einen Video- und Audio-Codec angeben oder nur den Stream kopieren, wenn Sie nur Untertitel hinzufügen möchten.
MP4:
MKV:
quelle
Der MKV-Container unterstützt praktisch alles Video- und Audio-Codecs sowie Untertitel und DVD-Menüs. Sie können also einfach Codecs vom Eingabevideo zum Ausgabevideo mit MKV-Container mit Untertiteln kopieren. Zuerst sollten Sie SRT in das ASS-Untertitelformat konvertieren
und betten ASS-Untertitel in Video ein
Arbeitete auch mit VMW-Datei.
Siehe die Wiki-Seite Vergleich der Containerformate
quelle
ffmpeg unterstützt den
mov_text
Untertitel-Encoder, der ungefähr der einzige ist, der in einem MP4-Container unterstützt wird und von iTunes, Quicktime, iOS usw. abgespielt werden kann.Ihre Zeile würde lauten:
ffmpeg -i input.mp4 -i input.srt -map 0:0 -map 0:1 -map 1:0 -c:s mov_text output.mp4
quelle
Ich habe versucht, MP4Box für diese Aufgabe zu verwenden, aber es konnte nicht mit dem M4V umgehen, mit dem ich es zu tun hatte. Ich hatte Erfolg beim Einbetten der SRT als weiche Untertitel mit ffmpeg mit der folgenden Befehlszeile:
ffmpeg -i input.m4v -i input.srt -vcodec copy -acodec copy -scodec copy -map 0:0 -map 0:1 -map 1:0 -y output.mkv
Wie Sie musste ich eine MKV-Ausgabedatei verwenden - ich konnte keine M4V-Datei erstellen.
quelle
Ich werde eine einfache und allgemeine Antwort geben, die mit einer beliebigen Anzahl von Audios und srt- Untertiteln funktioniert und die Metadaten berücksichtigt , die den mkv- Container enthalten können. So werden sogar die Bilder hinzugefügt, die die Matroska möglicherweise als Anhänge enthält (obwohl dies kein anderer AFAIK-Typ ist), und sie werden in Spuren konvertiert. Sie werden nicht in der Lage sein zu sehen, aber sie werden da sein (Sie können sie demuxen). Ah, und wenn der mkv Kapitel hat, dann auch den mp4 .
Wie Sie sehen, dreht sich alles um das
-map 0
, was FFmpeg anweist, alle Spuren hinzuzufügen, einschließlich Metadaten, Kapitel, Anhänge usw. Wenn es eine nicht erkannte "Spur" gibt ( mkv erlaubt das Anhängen eines beliebigen Dateityps), wird dies der Fall sein Beenden Sie mit einem Fehler.Sie können einen einfachen Stapel erstellen
mkv2mp4.bat
, wenn Sie dies normalerweise tun, um eine mp4 mit demselben Namen wie das mkv zu erstellen . Es wäre besser mit Fehlerkontrolle, einem anderen Ausgabenamen usw., aber Sie bekommen den Punkt.Jetzt können Sie einfach laufen
Und es wird "Video mit Untertiteln etc.mp4" mit dem Maximum an Informationen erstellt.
quelle
Einfaches Beispiel:
Ersetzen Sie nur die Linux-Variablen
quelle
Dies ist der Grund, warum mkv ein so guter Container ist, besonders jetzt, wo er ausgereift ist:
quelle