Problem: Frame rate ändert sich beim Encode

  • Also mit:
    LoadPlugin("C:\Program Files (x86)\MeGUI\tools\lsmash\LSMASHSource.dll")
    LWLibavVideoSource("D:\FTP\FRTC.mkv")
    AssumeFPS(24000, 1001)

    bekomme ich einen Clip, der rund 30 Sekunden länger läuft als der Source-Clip. Audio und Video sind daher wieder asynchron.

  • Gegenprobe: AssumeFPS(30000, 1001)

    Dürfte dafür deutlich zu kurz sein?

    Wäre dann ja schön sonderbar, wenn die Spieldauer nur mit der sonderbaren Framerate passt. Ist mir im Moment zu hoch...

  • Also bei der Wiedergabe im Mediaplayer bekomme ich angezeigt: 41359 Frames bei 29,970 FPS = 23min. Wenn ich die Datei nur über LWLibavVideoSource öffne: 33629 Frames bei 24,373 FPS = 23min.

  • Sehr interessant:

    Laut MediaInfo sollen es 33081 Frames sein, für 23 Minuten passt die Framerate 24000/1001.

    Laut AviSynth sind es 33629 Frames? Da wird wohl die Ursache liegen, der Decoder findet zu viele Frames.

    Fand FFMS2 genauso viele?

  • Und lässt sich das irgendwie "fixen"? DirectShowSource sagt: 41359 Frames, FFVideoSource und LWLibavVideoSource: 33629 Frames. Die "richtigen" 33081 Frames bekomme ich nur über die MediaInfo angezeigt.

  • DirectShowSource rechnet auch mit Soft Telecine (24:30 = 4:5). Mal zurückrechnen: 41359 * 4/5 = 33087,2 ... ist immerhin nahe an den 33081.

    Ist dieses Video irgendwo öffentlich verfügbar, oder eine "Privatkopie", die besser privat bleibt? Solches Material zum Testen zu haben wäre ja eigentlich nützlich...

    Ich frag auch mal im englischen doom9-Forum.

  • Zitat

    Laut AviSynth sind es 33629 Frames? Da wird wohl die Ursache liegen, der Decoder findet zu viele Frames.


    Was am Pulldown liegen mag,..

    Wäre vermutlich einfacher zu lösen, wenn Enorefe mit mkvmerge einfach einen kleines Stück (< 30sec) aus dem Clip schneiden würde. Dann checked ob der Effekt mit dem kleinen Stück auch auftritt und falls ja dieses Sample irgendwo hochläd und hier shared,...

    Momentan sind folgende Fehlerquellen denkbar:
    1. Decoder kommt nicht oder nicht korrekt mit eventuellen Framerate change flags klar (eventuell kommt DGDecNV damit besser klar)
    2. Der Clip ist vfr; nur weil MediaInfo CFR sagt ist das ja nicht unbedingt richtig.
    3. Eventuell wurde der Clip per mkvs stretch Option gestreckt oder gekürzt.

    Cu Selur

  • Wie kann man denn zuverlässig herausfinden, ob 3. vorliegt? Ich hatte gehofft, dass mkvinfo darauf Hinweise gäbe. Lediglich dass da jemand mit mkvmerge v2.0 gearbeitet habe, sieht "verdächtig" aus, wenn wir doch schon bei v6.7 sind...

    Und 2. halte ich für recht unwahrscheinlich, weil eben die Framerate doch ganz gut passt.

  • Code
    Stretch analyse results:  - Track_2, mkv ID: 1, type: A_AAC raw length: 64.191s  - delay: 8ms  - length in container: 64.2003s  - abs(stream - container length): 0.001336s  - stream/container length: 99.9979% (0.999979) => stretch factor: 1/1  - Track_1, mkv ID: 0, type: V_MPEG4/ISO/AVC raw length: 51.4549s  - length in container: 64.1804s  - abs(stream - container length): 12.7255s  - stream/container length: 80.1723% (0.801723)  - Video stream/container fps: 23.976fps, raw fps: 29.97fps (MediaInfo) => stretch factor: 24000/29970

    -> stretch passiert durch flag im mkv container.
    Nebenbei: Wegen Copyright würde ich den Clip nicht so lang machen.

    Wenn ich die RAW Stream einfach remuxe ist der Output synchron:

    Code
    MP4Box -par 1=8:9 -add "H:\Temp\FRTC_001_-017_11_21_17_1210_02.264"#video:fps=23.976:name=:lang="en" -brand avc1 -add "H:\Temp\iId_3_aid_0_lang_en_11_21_17_1210_01.aac"#audio:lang="en" -mpeg4 -new "H:\Output\simpelRemux.mp4"


    wenn ich den Clip reencode (DGDECNV als Decoder) ist alles (vor allem orientiert an der Szene in der Gesprochen wird) synchron,...

  • @ Selur:

    Aber Video- und Audio-Stream haben doch die gleiche Dauer laut bisherigen Ausgaben von MediaInfo ind mkvinfo. Welches Programm also erzeugt die von dir zitierte Ausgabe?!
    __

    Andere Idee ... Frische mal die MKV mit einem aktuellen mkvmerge 6.7 auf, einfach laden und eine Kopie speichern.

  • Dann hat wohl mkvmerge 2.0 damals (nach heutigem Stand) "falsch" gemultiplext, und beim Remultiplexen hat mkvmerge 6.7 daraus die falschen Informationen gezogen?

    Also: Die ganze Datei demultiplexen (mkvextract, als GUI dafür z.B. via MKVExtractGUI2 oder MKVCleaver) und die Elementarstreams neu multiplexen?

    Erst mal nur als rhetorische Fragen. ;)

  • Wenn ich Video- und Audio-Stream extrahiere und neu muxe, bekomme ich ein File, das im Mediaplayer 18:42min lang ist, in der MediaInfo hat sich allerdings nicht viel geändert, sogar die Duration wird noch mit "22mn 59s" angegeben. Audio ist asynchron, Video hört bei 18:42 auf, Audio dauert 22:59.

  • Zitat

    Aber Video- und Audio-Stream haben doch die gleiche Dauer laut bisherigen Ausgaben von MediaInfo ind mkvinfo.


    da wird immer nur die Container länge angezeigt :)

    Zitat

    Welches Programm also erzeugt die von dir zitierte Ausgabe?!


    Hybrid :D (mit aktiviertem 'Scan for streched streams'); dabei wird dann die detaillierte mkvinfo Ausgabe genommen und Paket für Paket die Längen des RAW Streams addiert. :)

    Mit:

    Code
    FFVideoSource("....",fpsnum=24000,fpsden=1001)


    und entsprechender 23.976 als Framerate im x264 Aufruf und beim Multiplexen ist bei mir alles synchron.

  • @ Enorefe:

    Beim erneuten Multiplexen musst du sicherlich noch einmal eine Framerate explizit angeben, ansonsten wird möglicherweise eine Standard-Rate angenommen, die gerade in deinem Fall nicht passt. Ich vermute, dass "24000/1001" in deinem Fall eine geeignete fps-Angabe für mkvmerge ist... Du kannst dir beim erneuten Multiplexen von der MeGUI mit einem Multiplex-Job (Tools-Menü) helfen lassen.

    Da du AVC-Video und AAC-Audio hast, würde ich sogar zum MP4-Kontainer raten.

  • Wenn ich die Frame rate mit 24000/1001 angebe, ändert sich nichts an dem Problem, das einzige, was sich ändert, ist die "Original Frame rate" Zeile, die dann auf den krummen ~24,3 FPS steht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!