Falsche Bildrate, beschädigte Wiedergabe von isom/mp4-Dateien, die von H.264/AC3 MPEG-TS remuxiert wurden

HINWEIS: Diese Frage wird durch diese neue Frage ersetzt , bitte antworten Sie nicht unter diesem Beitrag.

Was ist passiert?

  • [Bearbeiten] DVB-Datei ('Datei1') im TS-Format von H.264/AC3@50i kann nicht richtig in eines der folgenden Formate remuxt werden: isom/mp4; QuickTime-MOV; Matroska

  • Eine andere DVB-Datei ('Datei2') im TS-Format von MPEG-2/MP2@59.94i kann ordnungsgemäß in eines der folgenden Formate remuxt werden: MPEG; isom/mp4. QuickTime MOV und Matroska werden nicht ausprobiert.

  • [Update] Noch ein weiteres im TS-Format von H.264/AAC@29.97p kann problemlos in isom/mp4 remuxt werden, ohne dass andere ffmpeg-Schalter als -i, -c copy erforderlich sind.

Technische Details

  • FFMpeg meldet Millionen der folgenden Fehlermeldungen, mit oder ohne jede mögliche Kombination dieser Schalter: -fflags +genpts, -fflags +igndts, -fflags +discardcorrupt

    • Befehlszeile istffmpeg.exe -fflags +igndts -fflags +genpts -fflags +discardcorrupt -i INPUT -c copy -format mp4 OUTPUT
    • Fehlermeldung 1:
      [mp4 @ address] pts hat keinen Wert
      Letzte Nachricht wurde xxx Mal wiederholt
    • Fehlermeldung 2:
      [mp4 @ address] Nicht monotones DTS im Ausgangsstrom 0:0. Zurück ... Aktuell ... Wechseln zu ... , bla bla
  • AVIDemux schließt den Betrieb mit falschen Metadaten und fehlerhafter Wiedergabe ab. Dateieigenschaften und Wiedergabeverhalten ähneln denen, die von FFMpeg erstellt wurden

    • Framerate wird variabel, sollte 50i sein
    • Die durchschnittliche Bildrate ist nicht der richtige Wert und zeigt sehr seltsame Zahlen
    • Die Bildrate der Wiedergabe ist anormal, sie schwankt übrigens. 59.94 und 39.xx
  • [Bearbeiten] MP4box meldet 2 Mal die folgenden Warnungen und erzeugt ein gezacktes Bild mit falscher Bildrate, wie oben erwähnt. Wenn Sie das resultierende Video sehr genau betrachten, sehen Sie das Bild mit vielen Blöcken; dies ist in der Originaldatei nicht zu finden.

    • Befehlszeile istmp4box.exe -fps 50 -add "INPUT#video" OUTPUT
    • Fehlermeldung:
      [MPEG-2 TS] PID xx PCR Diskontinuität signalisiert, aber diff ist klein (diff xx us – PCR diff xx vs. prev PCR diff 0) – ignorieren

Meine Fragen im Detail

1 Was in aller Welt ist "DTS" und "PTS"? Sie scheinen einen erfolgreichen Remux zu behindern.
2 Ist dies auf eine beschädigte Datei oder einen Softwarefehler zurückzuführen (siehe https://trac.ffmpeg.org/ticket/4768 und https://trac.ffmpeg.org/ticket/502 )?
3 Wenn es sich um einen Softwarefehler handelt, was sind die Problemumgehungen?
4 Jede praktikable Lösung, die MPEG Transport Streams in MP4 remuxt, ist willkommen. MPEG-TS nimmt zu viel Overhead in Anspruch und wird plattform- und systemübergreifend nicht gut unterstützt.

Diagnoseinformationen
– MediaInfo-Dump von Datei1, Datei2 und Datei1, remuxed in mp4 von FFMpeg
http://pastebin.ca/3966322

Was bedeutet beschädigte Wiedergabe - Dekodierungsfehler? Ist die Wiedergabegeschwindigkeit immer falsch oder schwankt sie?
@Mulvya, die Wiedergabegeschwindigkeit ist immer falsch; Rahmenbild scheint in Ordnung zu sein; Der Decoder kann funktionieren, aber anscheinend ist die Datei nicht verwendbar.
Behält ein TS-zu-TS-Remux die Wiedergaberate bei? Das store methodvon file1 ist ungewöhnlich. Versuche es mit ffmbc . Wenn Sie nicht kompilieren können, holen Sie sich eine ältere Binärdatei von videohelp.com/software/ffmbc
@Mulvya , TS→TS remux funktioniert in FFMpeg mit den folgenden angegebenen Optionen: -mpegts_service_type advanced_codec_digital_hdtv -mpegts_m2ts_mode false -mpegts_flags system_b; funktioniert in FFMbc mit -fflags +genptsangegeben. TS→mp4 erfolgreich in FFMbc (0.7.2) mit -fflags +genpts -f mp4angegeben. Der ffmbc-Hack funktionierte für diese Datei und einige andere, der Rest schlug immer noch fehl. Das Problem scheint sich auf Zeitstempel zu konzentrieren. Eine neue Frage wurde veröffentlicht, um diese zu ersetzen.

Antworten (1)

Um einen Teil Ihrer Frage zu beantworten (und ein paar andere Abkürzungen hinzuzufügen, auf die Sie stoßen werden):

  • PTS = Präsentationszeitstempel
  • DTS = Zeitstempel dekodieren
  • PCR = Programmtaktreferenz
  • SCR = Systemtaktreferenz

MPEG-Elementarströme ordnen die Frames für die Übertragung neu. Das PTS gibt die Reihenfolge an, in der die Rahmen wieder zusammengesetzt werden sollten. Der DTS teilt dem Decoder mit, ob ein Frame decodiert werden muss, bevor er angezeigt wird (weil ein P- oder B-Frame darauf verweist). PCR oder SCR sind die Zeitskala, auf die sich PTS und DTS beziehen.

tstools und andere Transportstromanalysatoren können Ihnen dabei helfen festzustellen, ob das PCR/PTS/DTS-Problem in der Quelldatei liegt oder nicht.

Die Links, die Sie bereitgestellt haben, sind einfach fabelhaft! Allerdings bin ich verwirrter, nachdem ich die PDF-Seiten 43-44 gelesen habe. Obwohl der PTS aufgrund der bidirektionalen Codierung möglicherweise nicht monoton ist, sollte dies für einen richtigen (De)Muxer keine Frustrationen hervorrufen, da (i) der Stream gemäß dem DTS gesendet und empfangen wird, das (a) monoton sein muss und ( b) <= PTS-1, und (ii) jedes Feld muss einen aussagekräftigen PTS haben. Wenn die Millionen „pts has no value“ und „non-monotonous DTS“ in FFMpeg real sind, wie könnte es dann möglich sein, eine fehlerfreie Wiedergabe der ursprünglichen ts-Datei (die ich habe) zu haben?
Es ist definitiv unwahrscheinlich, dass ein Quellenproblem vorliegt, das nicht während der Wiedergabe erkannt wird und nur während der Transcodierung auftritt. Aber wenn ich mir über etwas in einem Transportstrom sicher sein möchte, lasse ich ihn durch einen Analysator laufen. Manchmal schnappen Sie etwas auf, das subtil falsch ist, das ein Decoder korrigieren kann, an dem ein anderer erstickt.