Konvertieren eines ATSC TS in MKV einschließlich aller Audiospuren und Untertitel von FFMPEG

442
PCSO SAR COMM

Ich vermute, dass dies irgendwie möglich ist, weil ich Programme gesehen habe, die ein GUI-Frontend für FFMPEG sind, die dies im Wesentlichen tun, aber ich versuche, dies über eine Befehlszeile in Ubuntu herauszufinden. Ich möchte von einem MPEG2-Videostream von einer ATSC-Aufnahme zu h264 umcodieren, aber alle Audiokanäle so belassen, wie sie sind. Ich möchte auch Untertitel in eine Untertitelspur im letzten MKV-Wrapper konvertieren. Auch ist es möglich, zumindest die primäre Audiospur und Untertitel - Spuren als „markieren En tsch“? Um es noch erstaunlicher zu machen, mache ich daraus ein BASH-Skript, in dem ich die Eingabedatei benennen und sie unter demselben Namen speichern kann, aber in .mkv ändern kann, was sie perfekt macht. Ich kann weder das Skript von Grund auf neu schreiben, noch kenne ich die richtigen Variablen für den FFMPEG-Befehl.

0

1 Antwort auf die Frage

0
Scott Reynolds

Es ist ein bisschen schwierig, aber hier ist eine Arbeitsmethode:

INFILE=input.ts OUTFILE=output.mkv ffmpeg \ -i "$" \ -f lavfi -i movie="$[out+subcc]" \ -map 0 -map 1:s \ -codec:v libx264 \ -codec:a copy \ -codec:s srt \ -metadata:s:s:0 language=eng \ "$" 

Hier input.tsund output.mkvsind Ihre gewünschten Eingabe-MPEG-TS- bzw. Ausgabe-Matroska-Dateien. Die Verallgemeinerung auf ein Skript bleibt dem Leser als Übung überlassen.

Interpretation der Parameter, Zeile für Zeile:

-i ... ist die Eingabedatei.

-f lavfi -i ... erlaubt uns, den eingebetteten Untertitelstrom zu extrahieren.

-map 0 -map 1:s wählt die Streams für die Ausgabe aus.

-codec:v libx264 weist ffmpeg an, Video in H.264 zu konvertieren.

-codec:a copy kopiert alle Audioströme unverändert in die Ausgabe.

-codec:s srt weist ffmpeg an, die eingebetteten Bildunterschriften in SRT zu konvertieren.

-metadata:s:s:0 language=eng Setzt die Untertitel-Stream-Sprache auf Englisch.

Anmerkungen:

  • Ich habe dies nur mit Over-the-Air-ATSC-Streams verwendet, einschließlich EIA-608-Untertiteln. Ich habe keine Ahnung, ob es mit QAM-Aufnahmen (Kabelaufnahmen) funktioniert, obwohl ich davon ausgehe, dass dies der Fall ist.
  • Möglicherweise haben Sie Probleme mit Eingabedateinamen, die bestimmte Zeichen enthalten, auch wenn Sie den Dateinamen in Anführungszeichen setzen.
  • Dadurch werden alle Audioströme kopiert. Wenn Sie nur den ersten wollen, müssen Sie einzelne Streams aus Eingang 0 explizit zuordnen.
  • Die Audio-Streams verfügen möglicherweise bereits über eine Sprache. Wenn dies nicht der Fall ist, fügen Sie eine weitere Option -metadata hinzu, um auch die Sprache des Audiostreams festzulegen.
  • Sie werden wahrscheinlich mit der Videokodierungsqualität mit der Option -crf experimentieren möchten. Wenn Ihr Eingangsvideo interlaced ist, möchten Sie möglicherweise deinterlacen und auf 720p skalieren, indem Sie -filter:v bwdif=0,scale=1280:720nach den -mapZeilen hinzufügen .