Richtiger Befehl zum Remuxen von mpeg-ts in mp4 mit FFmpeg?

Soll ich einfach einen einfachen Befehl wie diesen verwenden:

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc C:\video_output.mp4

aber ich habe gesehen, dass viele -copytses verwenden, warum ist das nötig, ich verstehe die Dokumentation nicht vollständig?

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc -copyts C:\video_output.mp4

und jedes Mal, wenn ich es verwende, -copytsgibt es eine zusätzliche Verzögerung, bevor der erste Frame beginnt. Ist es also sicher, dies zu beheben, -start_at_zerooder es unterbricht den Punkt von Kopien bis zu einem gewissen Grad (wenn das Sinn macht)?

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc -copyts -start_at_zero C:\video_output.mp4

Vielen Dank!

Antworten (1)

Sofern Sie nicht wissen, dass Zeitstempel unbedingt aufbewahrt werden müssen, müssen Sie -copyts. MPEG-TS, ein Format, das für die Fernanzeige verwendet wird, hat standardmäßig einen gewissen Startzeitversatz, um eine Pufferung auf der Seite des Players zu ermöglichen. MP4 für die lokale Wiedergabe, braucht das nicht, copytswird es beibehalten.

aber was ist der unterschied zwischen no -copytsund -copyts+ -start_at_zero? Gibt es eine Notwendigkeit dafür, warum existiert sie?
start_at_zeroist relevant, wenn Sie in die Eingabe suchen, dh -ss 10normalerweise wird der TS des ersten gesuchten Frames auf Null zurückgesetzt. Mit s_a_0 ist sein TS jetzt 10. Wenn es mit verwendet copytswird, wird dieser TS an die Ausgabe übermittelt.
Ich dachte, Sie meinten, wenn ich -ss 10eine .ts-Datei habe, wird sie tatsächlich ss @ 11,4 (1,4 Verzögerung von ts), aber wenn ich -ss 10 mit s_a_0 verwende, beginnt sie tatsächlich bei 10? Als ich überprüft habe, ergibt dies keinen Sinn, da dies nicht der Fall ist. Die ursprüngliche .ts-Datei hatte start: 1.4, wenn sie unter -ss 10ging, hatte dieselbe einen Start von 0.0480, genauso, wenn ich start_at_zero hinzufügte, oder sowohl copyts als auch start_at_zero.
Angenommen, Ihr MPEG-TS hat eine Startzeit von 15 und eine Dauer von 10 Sekunden, und Ihr Codec ist intracodiert, sodass wir uns keine Gedanken über GOP machen müssen. Bei -ss 3 -i in.ts -c copy out.mp4hat der erste gesuchte Frame nach der Demuxer-Phase einen PTS von 0 und out.mp4 hat eine Startzeit von 0. Bei -ss 3 -copyts -i in.ts -c copy out.mp4hat der erste gesuchte Frame nach dem Demuxer einen PTS von 18, der während des Mux in out.mp4 übertragen wird. Mit -ss 3 -start_at_zero -copyts -i in.ts -c copy out.mp4hat der erste gesuchte Frame PTS von 3 nach demuxer, der beim Mux in out.mp4 übertragen wird.
vielen Dank für die weitere Klarstellung. Um es jetzt nach Ihrer ursprünglichen Antwort zusammenzufassen: In welchem ​​​​genauen Fall, in dem ich nur eine Datei von .ts in einen .mp4-Container remuxen möchte, ohne an Qualität zu verlieren, muss -copyts? Und wenn ich es in bestimmten Situationen brauche, ist es nicht immer besser, s_a_0 einzuschließen, wenn ich diese "Pufferung" in meiner neuen .mp4-Ausgabe nicht haben möchte?
Sie sollten beim Kopieren in eine MP4-Datei niemals Kopien benötigen. Lassen Sie ffmpeg neue Zeitstempel generieren. Zeitstempel haben keinen Einfluss auf die Video-/Audioqualität.
Was ist mit Audio/Video-Synchronisation? Oder ist das (iirc) erst nach der 26 Stunde:etwas:etwas-Marke?
Normalerweise kein Problem, aber ich kenne den aktuellen Stand, wie ffmpeg den PTS-Rollover um die 26-Stunden-Marke handhabt, nicht. Update: anscheinend nicht gut .
Wenn Sie also berücksichtigen, was einer der Leute in den Kommentaren zu Ihrem Link gesagt hat, zurück zu einer meiner Fragen, gibt es etwas Falsches oder Negatives bei der Verwendung von beiden -copytsund -start_at_zerofür jede .ts-Datei, wenn Sie es mit einem Remux von .ts zu tun. mp4? Entschuldigen Sie, dass Sie mit den Fragen so nervig sind, aber vielen Dank, dass Sie bei allen Antworten noch konsequenter sind, wirklich.
All copyts + sa0 wird erreichen, dass die Startzeit der MP4 den Offset des getrimmten Teils innerhalb der Quelldatei darstellt, aber die Identität der Quelldatei oder der Befehl, der zu ihrer Generierung verwendet wurde, wird nicht durchgesetzt. Warum sollten Sie sich die Mühe machen, es sei denn, Sie wissen, dass Sie es müssen?
Nun, ich war mir nicht sicher, ich habe Aufzeichnungen von Streams, twitch.tv, meistens im .ts-Format, also war ich mir nicht sicher, ob es irgendwelche Probleme verursachen würde, aber ja, wenn Sie das sagen, werde ich sie einfach alle von remuxen. ts zu mp4 mit -c:v copy -c:a copy -bsf:a aac_adtstoascohne -copytsoder sa0. Ich war sehr interessiert an dem Aspekt hinter den Kulissen, erzeugt die Verwendung von Copyts nicht von selbst geeignete neue TS, kann es vor 26 Stunden aus der Synchronisation geraten, und all diese Dinge, von denen ich keine Ahnung hatte!