Legen Sie eine Untertitelsprache mit ffmpeg
Ich habe versucht, googeln Sie die Sprache der Untertitel-stream mit ffmpeg und gefunden -slang option. Also versuchte ich den folgenden Befehl aber sofort eine Fehlermeldung:
ffmpeg -i input.avi -i subs.srt -c:a copy -c:s mov_text -slang eng -c:v libx264 -profile:v high -level:v 4.0 output.mp4
ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 18 2013 23:00:53 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
libavutil 52. 13.100 /52. 13.100
libavcodec 54. 86.100 /54. 86.100
libavformat 54. 59.106 /54. 59.106
libavdevice 54. 3.102 /54. 3.102
libavfilter 3. 32.100 /3. 32.100
libswscale 2. 1.103 /2. 1.103
libswresample 0. 17.102 /0. 17.102
libpostproc 52. 2.100 /52. 2.100
Unrecognized option 'slang'.
Fehler Spaltung der argument-Liste: Option nicht gefunden
Nach mehr googeln fand ich einen anderen Weg, es zu tun mit der-Metadaten-Befehl:
ffmpeg -i input.mp4 -i subs.srt -c:a copy -c:v copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4
Und das funktioniert absolut gut. Aber das ist nicht erwähnt in der ffmpeg-Mann-Seite, in der Erwägung, dass -slang ist, das macht mich denken, die -Metadaten-Befehl ist vielleicht veraltet oder in irgendeiner anderen Weise nicht so gut wie-slang.
- Was ist der Unterschied zwischen der Verwendung der beiden oben genannten Methoden (-slang vs -Metadaten)?
- Warum mein -slang-Befehl eine Fehlermeldung zu geben? Habe ich es falsch?
- Sie sollten auch die Konkurrenz zu ffmpeg die Ausgabe der Konsole für jedes Ihrer ffmpeg-Befehle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einigen Recherchen den Grund dafür gefunden, warum -slang hat nicht funktioniert. In der Tat verwenden Sie eine aktuelle version von ffmpeg, und es ist eine gute Sache, aber wenn die Dokumentation noch beschreiben Sie die option, finden Sie in der ChangeLog:
Wenn Sie ein Befehlszeilen-Beispiel wird, überprüfen Sie ob die option verwendet, sind in Ihrer version von ffmpeg.
Den
-slang
option nicht.Aber es ist auch der Beweis, dass die on-line Dokumentation zu ffmpeg ist irgendwann falsch in Bezug auf die code-änderung.
-metadata:s:1 language=eng
würde den zweiten stream auf Englisch und den ersten stream, die Sie verwenden würden-metadata:s:0 language=eng
. Irgendwelche Gedanken?-metadata:s:1
(2. stream in der Datei) oder richtig als-metadata:s:a:0
(die erste audio Datenstrom in der Datei).eng
Beispiel, ich würde davon ausgehen ISO 639-3 (zB.fin
für Finnisch)?Die option
setzt die Metadaten-Sprache auf eng auf die stream id 1 (das ist, in den typischen Fällen der erste audio -
stream). In der Erwägung, dass die option
setzt die Metadaten-Sprache auf eng auf
die ersten Untertitel-stream.
Manpage von ffmpeg :
Und schließlich von der Knauf stream Planern, sehen wir