2013-12-19 16 views
10

Ich habe die FFMpeg Dokumentation und viele Foren geprüft und rechnete die richtige Befehlszeile aus Untertitel aus einem .MP4 Video zu extrahieren, wie so aussehen sollte:Ist es möglich, SubRip (SRT) Untertitel aus einem MP4 Video mit ffmpeg zu extrahieren?

ffmpeg -i video.mp4 -vn -an -codec:s:0 srt out.srt 

Allerdings habe ich die folgende Fehlermeldung erhalten, die mir leiht die Frage, ob dies überhaupt möglich ist:

Fehler beim Geber 0 für Ausgangsstrom # Öffnung: 0 - vielleicht falscher Parameter wie bit_rate, Geschwindigkeit, Breite oder Höhe

Mit ffmpeg -codecs kann ich bestätigen, dass ffmpeg in der Lage sein soll, Untertiteln zu verschlüsseln.

ffmpeg -i video.mp4 verwenden, kann ich sehen, dass es in dem Video eingebettet zwei Untertitelspuren ist:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': 
... 
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1/0x31637661), yuv420p, 720x572 [SAR 64:45 DAR 256:143], 1341 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc 
Stream #0:1(eng): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:2(fra): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:3(eng): Subtitle: dvd_subtitle (mp4s/0x7334706D) 
Stream #0:4(und): Subtitle: mov_text (text/0x74786574) 

EDIT

ich mit dem vereinfachten Befehlszeile in den Kommentaren gezeigt getestet haben, aber ich bekomme immer noch den gleichen Fehler. Hier ist a link to the detailed verbose output von der Ausführung des Befehls. Ich habe auch versucht, Metadaten und Kapitel in der resultierenden Ausgabe vollständig zu deaktivieren, aber das erzeugt immer noch denselben Fehler.

+3

Einfache 'ffmpeg -i in.mp4 out.srt' funktioniert für mich richtig. (ffmpeg 2.0.1) – pogorskiy

+0

Versuchen Sie 'ffmpeg ... -loglevel debug ...', um mehr Informationen über Fehler zu erhalten – pogorskiy

+0

Ich habe beide Vorschläge versucht, aber ich kann einen offensichtlichen Fehler nicht identifizieren. Vielleicht wird dies dadurch verursacht, dass ffmpeg versucht, Kapitelmarkierungen in der resultierenden SRT-Datei auszugeben? Ich habe die detaillierte Debug-Ausgabe inklusive. –

Antwort

22

ich enventually herausgefunden, warum ich war nicht erfolgreich:

Die angegebene Befehlszeile völlig in Ordnung gewesen wäre, wenn die Untertitel aus dem Quellvideo in einer textbasierten Darstellung codiert wurden. Wie jedoch in der Ausgabe der ffmpeg -i Befehlszeile zu sehen ist, sind die Untertitel im Format "dvd_subtitle" codiert.

Das Format dvd_subtitle speichert Bitmaps für jeden Untertitel im Video. Daher kann ffmpeg die Bitmaps nicht in Text übersetzen.

Für diese Aufgabe muss man auf eine OCR-basierte Software zurückgreifen, die einem Benutzer hilft, jeden Untertitel als Text aus seiner Bitmap-Représentation zu identifizieren.

(Es gibt einen sekundären Text-basierte Untertitel im Quellvideo, aber ich weiß nicht, wo es herkam und von den meisten populären Spielern nicht gesehen wird. Für alle Absichten und Zwecke scheint dieser "mov_text" Untertitel Seien Sie ein Stub Platzhalter, wahrscheinlich ein Artefakt der Konvertierung von der Original-DVD)

+0

Ich denke, dass Textspur ist die Kapitelmarkierungen, nicht sicher aber. – mcdado

4

Nur zum ersten Mal, (Kann wegen rep noch nicht kommentieren), aber Extrahieren SRT aus einem MP4 wird in einer Datei als MOV_Text nicht die regelmäßige SRT. Es wird immer noch hinzugefügt und funktioniert, aber es ist wie mp4 zu m4v zu ändern. Während es normalerweise funktioniert, funktionieren die Dinge im Code nicht gleich. Mov_text ist schrecklich für die manuelle Anpassung von Schriftart/-größe usw. Am besten ist es, eine SRT aus dem Internet herunterzuladen und zu testen!

Dies funktioniert, wird aber in mov_text codiert srt-Datei führen:

ffmpeg -i in.mp4 out.srt 
0

Versuchen Sie es mit der Karte Option ... wenn es zu viele Ströme in Eingabedateien sind ....

Syntax wäre:

ffmpeg -i video.mp4 -map 0: 4 out.srt

Da es zwei Untertitel-Streams in Ihrem Video ist, zuerst auf 0: 3, die dvdsubtitle so ist, kann auf 0 nicht konvertiert werden, um srt so werden wir zweite Untertitel konvertieren: 4 -Strom was ist mov_text und ist soft copy von untertitel so kann leicht konvertiert werden ....