Falsche Längenangabe in NVE bei MPEG2 Videos (DVB)

  • Hallo,


    bei der Umwandlung von TV-Aufnahmen (DVB-C) mittels Nero Vision Express (Option Film erstellen) ins Nero MPEG4 Format treten bei mir Probleme auf. Beim Import der *.MPV Videos ist die Längen- und Frameangabe innerhalb NVE falsch; die Audiolänge der zugehörigen *.MPA Dateien stimmt! Anstatt z.B. der korrekten 15:06 Minuten und 22658 Frames werden nur 12:38 und 18584 Frames angezeigt. Hinzukommt, dass die erzeugten Videos ab dem vermeintlichen Endzeitpunkt komplett schwarz sind. Der Ton läuft sauber bis zum Ende weiter.


    Bin so vorgegangen: aus dem MPEG2 Stream wurden Video und Audio mittles PVAStrumento 2.1.0.15 getrennt und mit MPEG2Schnitt 0.7.1 am Anfang und Ende beschnitten. Andere Programme (z.B. MPC oder DGIndex) zeigen die Laufzeit und Framezahl danach korrekt an. Auch das Umwandeln z.B. in XviD AVIs oder x264 MP4s mittel VirtualDub oder MeGui klappt problemlos.


    Lediglich Nero (Vision Express 3.1.0.14 und ShowTime 2.0.0.39) haben mit den *.MPV Videos die genannten Schwierigkeiten.


    Hat jemand ähnliche Probleme oder einen Tip?


    Viele Grüße,
    Cornflake

  • Bin bisher nur soweit gekommen:


    1. Auch der MediaPlayerClassic zeigt bei reinen *.mpv Videos eine falsche Länge an! Und zwar wenn keine zugehörige gleichnamige Audiodatei vorhanden ist (*.mpa oder *.mp3). War mit vorher entgangen, da diese immer mit im gleichen Verzeichnis lagen.


    2. Werden die *.mpv und *.mpa gemultipexed, dann erkennen alle Programme (auch Nero) die korrekte Länge.


    3. VirtualDubMod scannt beim Einlesen die gesamte MPEG2 Datei und findet dadurch die richtige Länge.


    Also alle Programme lesen auf meinem System bei reinen *.mpv Videos eine falsche Länge (aus dem Header?). Somit dürfte eine zentrale Systemdatei/Filter das Problem verursachen.


    Nur welche? Wie kann ich das rausfinden?


    Viele Grüße,
    Cornflake

  • Ein MPEG-Video hat nicht einen Header, sondern immer wieder mal welche - darin sind in gewissen Abständen Timecode-Informationen (Uhrzeiten) enthalten. Gerade bei DVB kann es nun passieren, dass


    a) ein solcher Header mal durch eine Störung nicht lesbar ist


    b) die Übertragung (wegen Werbung) die Eigenschaften ändert, und dadurch der Timecode nicht mehr fortlaufend ist, oder ein spezieller Header erscheint, der das Ende der Übertragung meldet


    Leider kenne ich die für DVB verwendeten Tools nicht genau - eventuell kann bereits ProjectX einen fortlaufenden Timecode wiederherstellen, und Sequence-End-Header entfernen. Wenn nicht, sollte ReStream das mit der m2v tun können.

  • Danke LigH,


    der Hinweis auf ReStream hat mir sehr geholfen.


    Nachdem keine der Optionen
    - reset timestamps
    - zero broken-link flags
    - pogressie sequence
    - correct sequence extension length
    - remove seq. end codes


    eine Besserung gebracht hat, veränderte ich die Bitrate mit ReStream von den ursprünglichen 4936400 auf 4000000 bps. Und schwupps, MPC und NeroVE zeigen nun eine längere (fast schon richtige) Laufzeit an. :) Evtl. setzt Mpeg2Schnitt die Bitrate in der *.mpv Datei entsprechend der Summe aus Video und Audio?


    Aber kann/darf es wirklich sein, dass allein aufgrund von Bitrate und Dateigröße die Laufzeit und Frameanzahl bei *.mpv Dateien ermittelt wird?


    Besten Dank und Viele Grüße,
    Cornflake

  • Hallo Cornflake,


    Mpv-Dateien haben einen Tomecode (welcher von Mpeg2Schnitt natürlich durchgängig neu geschrieben wird, es sei denn es ist ausgeschaltet). Auf diesen Timecode kann man sich bei DVB-Dateien aber nicht verlassen, es sei denn er wurde von PX oder PVAS neu geschrieben.


    Also:
    - DVB-Dateien: vermurxter Timecode
    - demuxte Dateien (PX oder PVAS): Timecode OK
    - geschnittene Dateien: Timecode OK


    Um die Länge von MPV-Dateien zu ermitteln hat man (mindestens) drei Möglichkeiten:
    - die Datei durchgehen und die Bilder zählen (am genauesten, am langsamsten)
    - den Timcode der letzten GOP auslesen und die Länge der letzten GOP schätzen (etwas ungenauer, der Timecode muß stimmen, schnell)
    - die Länge aus der Bitrate berechnen (sehr ungenau, sehr schnell)


    Die Programme wollen die Länge des Videos sehr schnell wissen, also bleibt nur Möglichkeit 3.


    PX und (sicher auch) PVAS tragen in den ersten Sequenzheader je nach Einstellung verschiedene Bitraten ein (min/max/durchschnittlich). In Mpeg2Schnitt kannst du wählen ob der Eintrag des ersten Sequenzheaders für die neue Datei (es gibt ja jetzt einen neuen ersten Header) übernommen wird, ein fester Wert (einstellbar) eingetragen wird oder ob der Wert des jetzt ersten Headers einfach übernommen wird.


    Martin

  • Hallo Martin,

    Zitat von Martin Dienert

    In Mpeg2Schnitt kannst du wählen ob der Eintrag des ersten Sequenzheaders für die neue Datei (es gibt ja jetzt einen neuen ersten Header) übernommen wird, ein fester Wert (einstellbar) eingetragen wird oder ob der Wert des jetzt ersten Headers einfach übernommen wird.


    Martin


    herzlichen Dank für die Klarstellung.


    In Mpeg2Schnitt (Gratulation: ein wirklich unverzichtbares Programm!) wurde die Option "Bitrate im ersten Header korrigieren" gewählt (ist wohl Default). Ohne die Problematik gekannt zu haben :) , hätte ich vermutet, dass dabei die tatsächliche mittlere Bitrate eingetragen wird. Das ist nicht so, denn es kommt ja zu der fehlerhaften Längenauswertung durch die anderen Programme.


    Wäre es nicht sinnvoll, wenn Mpeg2Schnitt die tatsächliche mittlere Bitrate einträgt (evlt. als weitere Option)? Denn es kennt am Ende ja die Dateigröße und die echte Länge des Videos.


    Viele Grüße,
    Cornflake

  • Hallo Cornflake,


    Zitat

    Wäre es nicht sinnvoll, wenn Mpeg2Schnitt die tatsächliche mittlere Bitrate einträgt (evlt. als weitere Option)? Denn es kennt am Ende ja die Dateigröße und die echte Länge des Videos.

    Wäre sicher nicht schlecht. Allerdings habe ich mich mit der Bitratenberechnung noch nicht beschäftigt. Einfach Dateilänge durch Sekunden oder nur die Länge der eigentlichen Bildinformation ohne die ganzen Header?
    Deshalb vertraue ich einfach auf PX.


    Martin

  • Zitat von Martin Dienert

    .. Deshalb vertraue ich einfach auf PX.


    .. aber ProjectX (oder PVA) kommt doch vor Mpeg2Schnitt zum Einsatz. Die von PX eingetragenen Werte sind nach dem Schneiden des Videos kaum mehr richtig!? Oder übersehe ich da was?


    Viele Grüße,
    Cornflake

  • Hallo Martin,


    hier die Werte von zwei *.mpv Videos. Der jeweilige DVB Stream (2 GB) wurden mit PVS aufgeteilt und die beiden Clips mit Mpeg2Schnitt herausgeschnitten.


    ______XP-System_______ReStream____VDMpeg2____________________NVE____________
    Clip1: 458.707.912 Bytes, 4936400 bps, 22657 Fr, 15:06, 4049 kbps --> 18584 Fr, 12:23.38
    Clip2: 540.038.008 Bytes, 6300800 bps, 30094 Fr, 20:03, 3589 kbps --> 17141 Fr, 11:25.67
    _____________________________________________________________________________


    Schreibt man mit ReStream die von VD errechneten Bitraten (4049000 und 3589000 bps) in die Videos, dann liefert NVE für


    Clip1: 15:06.35 Min und 22658 Frames
    Clip2: 20:03.82 Min und 30095 Frames


    Bei der Framerate ein typisches +/- 1 Dv Problem; ansonsten optimal. Gut, man kann das auch manuell patchen (falls gewußt wie). Aber es wäre schon ideal, wenn Mpeg2Schnitt das für den Benutzer erledigt! :)


    Viele Grüße,
    Cornflake


    P.S. Hoffentlich kann man die Tabelle lesen. Hab's nicht besser hingekriegt.