Wie konvertiere ich .ts-Dateien verlustfrei in ein Mainstream-Format?

12

Ich habe eine Datei, die mit .ts endet (z. B. hier sind die ersten 10 MB ). Ich möchte es in ein Hauptstromformat (z. B. mp4, MPEG2-PS ...) konvertieren, wenn möglich verlustfrei (dh remuxen).

Ich habe gelesen, wie ich .ts-Dateien in etwas Nützliches konvertiere. Frage. Ich habe es avidemuxmit den Einstellungen "Kopieren" für die Video- und Audiostreams und dem Containerformat "PS" für MPEG versucht . Dies schlug mit der Fehlermeldung "Inkompatibles Audio / Für DVD muss Audio 48 kHz MP2 (Stereo), AC3, DTS oder LPCM (Stereo)" fehl.

Ich habe auch den vorgeschlagenen CLI-Befehl ausprobiert.

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

Die Ausgabedatei hat das richtige Video, aber keinen Ton, zumindest wenn sie mit VLC abgespielt wird. Dies ist ziemlich rätselhaft, da avconvder Audiostream anscheinend korrekt erkannt wurde.

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

Ich habe auch den CLI-Befehl ausprobiert, der in den Kommentaren einer anderen Frage vorgeschlagen wurde .

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

Wieder kein Ton in der Ausgabedatei.

EDIT: Ich habe VLC ausprobiert, wie von @Daniel vorgeschlagen. Es war fast perfekt. Es war schnell und benutzerfreundlich. Ich musste nur auf "Konvertieren / Speichern" klicken, die Eingabedatei hinzufügen, das MP4-Profil auswählen, den Video-Codec und den Audio-Codec auf "Original-Video- / Audiospur beibehalten" konfigurieren, eine Zieldatei auswählen und auf "Start" klicken. Das Video sah perfekt aus, aber das Audio war irgendwie leicht verfälscht, aber es könnte durch etwas ziemlich Exotisches im Audio-Stream meines Videos verursacht werden.

Lacton
quelle
Haben Sie VLC ausprobiert? videolan.org/vlc/index.html
Daniel
Sie haben erwähnt, dass Sie remuxen und wenn möglich nicht neu codieren möchten. Sind Sie sicher, dass VLC nur Remuxing ist?
Llogan
@ LordNeckbeard Guter Punkt! Wie kann ich sicher sein?
Lacton
Ich bin nicht mit VLC zum Konvertieren vertraut, habe aber eine Antwort mit hinzugefügt ffmpeg.
Llogan
VLC wandelt alles in etwas mit hervorragender Verlustfreiheit um. Grundsätzlich sind Sie durch das von Ihnen gewählte Format eingeschränkt.
Daniel

Antworten:

20

Matroska (MKV)

Dadurch werden alle Streams kopiert (re-mux):

ffmpeg -i input -map 0 -c copy output.mkv

Die -map 0Option wird verwendet, um alle Streams einzuschließen. Andernfalls wird das Standardverhalten für die Stream-Auswahl verwendet , bei dem nur ein Stream pro Stream-Typ ausgewählt wird. Da Matroska die meisten beliebigen Streams verarbeiten kann, habe ich aufgenommen -map 0.

MP4

Dadurch werden alle Streams kopiert (re-mux):

ffmpeg -i input -map 0 -c copy output.mp4
  • Wenn Ihre Eingabeformate nicht mit MP4 kompatibel sind, wird eine Fehlermeldung angezeigt.
  • Ihr Player / Gerät unterstützt möglicherweise nicht alle beliebigen, weniger verbreiteten oder älteren Formate, selbst wenn sie von MP4 unterstützt werden.
  • Im Zweifelsfall neu codieren in H.264 + AAC wie unten gezeigt.

Dadurch wird das Video in H.264 neu codiert und das Audio per Stream kopiert:

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

Im nächsten Beispiel werden sowohl Video als auch Audio neu codiert:

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

Verlustfreies H.264-Beispiel:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

Verlustfreie Dateien werden riesig sein.

Weitere Informationen finden Sie im FFmpeg-Wiki: H.264 .

llogan
quelle
Wenn Sie eine verlustfreie MP4-Datei codieren möchten, fügen Sie entweder -qp 0 oder -crf 0 hinzu, wie auf der FFMpeg-Wiki-Seite angegeben: trac.ffmpeg.org/wiki/Encode/H.264
SuperSluether
1
@SuperSluether Lossless erstellt riesige Dateien. Mit "verlustfrei" meine ich, dass Lacton "Remuxing" bedeutet.
Llogan
Die von mir bereitgestellte Beispieldatei ist tatsächlich abgeschnitten. Die eigentliche Datei, die ich remuxen möchte, ist zu groß für eine einfache Freigabe.
Lacton
1
@lacton Versuchen Sie, in Matroska zu muxen : ffmpeg -i 10MB.ts -c copy output.mkv. Sie erhalten eine Fehlermeldung : Error parsing AAC extradata, unable to determine samplerate. Deshalb hat mein MKV-Beispiel das Audio neu codiert. Siehe auch # 4472: AAC-Kopie aus dem Stream ohne Codierung schlägt fehl und lavf / mkv: AAC-Remuxing behoben . Dies gilt jedoch möglicherweise nicht für Ihre große, nicht abgeschnittene Eingabedatei und funktioniert möglicherweise wie erwartet.
Llogan
1
@ LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvhat perfekt funktioniert. Das Video wurde remuxed und der Ton klingt so gut wie das Original, ohne die leichte Beschädigung, die ich beim Konvertieren mit VLC bekam.
Lacton
3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) konvertiert problemlos fast alles in alles.

Versuch es einmal. Es läuft unter Linux, Windows und Mac OS X und verfügt über eine sehr benutzerfreundliche Oberfläche.

Daniel
quelle
Jetzt, da ich VLC für die Videokonvertierung verwendet habe, würde ich es empfehlen. Vielen Dank für diesen Vorschlag. Für meine .ts-Datei hat es fast funktioniert. Das Video sah perfekt aus, aber das Audio war irgendwie leicht verfälscht. Es könnte durch etwas ziemlich Exotisches im Audiostream meines Videos verursacht werden. Ich habe die ursprüngliche Frage so bearbeitet, dass sie diese enthält.
Lacton
Ja, es könnte besser funktionieren, wenn Sie einen anderen Subcontainer für das Audio in der mp4 verwenden. Vielleicht RAW.
Daniel
0

Als Ergänzung zur anderen Antwort von @llogan - als Stream-Kopie ist sowieso vorzuziehen:

Ich habe lange Zeit einige Befehle verwendet, um Audio zu extrahieren, ohne den Namen der Dateien zu ändern. Diese können an die hier vorgestellten angepasst werden, um sie in die Kontextmenüs der Dateimanager zu integrieren.

Verwenden Sie zum "Demuxen und Muxen", ohne den Namen der Datei zu ändern, Folgendes:

ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv

Ich habe das zu den benutzerdefinierten Aktionen von Thunar und zum Konfigurationstool für FileManager-Aktionen (Nautilus, Nemo, Caja, PCManFM) hinzugefügt, wie folgt:

sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f

während es in Thunar und video/mp2tin FileManager-Aktionen auf "* .ts" beschränkt ist.

Cipricus
quelle