Problem: Frame rate ändert sich beim Encode

  • Hallo zusammen,


    Ich bin ein ziemlicher Anfänger was Encoding angeht, aber habe bisher eig. immer eine Lösung für die Probleme gefunden, die mir bisher begegnet sind. Diesmal komme ich aber einfach nicht weiter. Ich habe ein Video "FRTC.mkv" mit folgenden Daten:


    Codec ID : V_MPEG4/ISO/AVC
    Duration : 22mn 59s
    Nominal bit rate : 2 511 Kbps
    Width : 720 pixels
    Height : 480 pixels
    Display aspect ratio : 4:3
    Original display aspect ratio : 3:2
    Frame rate mode : Constant
    Frame rate : 29.970 fps
    Standard : NTSC
    Color space : YUV
    Chroma subsampling : 4:2:0


    Ich wollte nur dieses Script hier auf das Video anwenden:


    "
    LoadPlugin("C:\Program Files (x86)\MeGUI\tools\ffms\ffms2.dll")
    FFVideoSource("D:\FTP\FRTC.mkv", threads=1)


    DeHalo_Alpha_mt()
    maa()


    Trim(2229,31363)
    "


    Als Ergebnis bekomme ich allerdings ein Video mit folgenden Daten:


    Codec ID : V_MPEG4/ISO/AVC
    Duration : 19mn 55s
    Bit rate : 1223 Kbps
    Width : 720 pixels
    Height : 480 pixels
    Display aspect ratio : 4:3
    Display aspect ratio : 3:2
    Frame rate mode : Constant
    Frame rate : 24.374 fps
    Standard : NTSC
    Color space : YUV
    Chroma subsampling : 4:2:0


    Die Frame rate ist von 29.970 auf 24.374 geschwunden, ohne dass ich (wissentlich) etwas an der Frame rate geändert habe. Nicht nur ist die Dauer des Videos davon betroffen, wenn ich die dazugehörige Audio-Datei zu schneiden versuche, passt es hinten und vorne nicht mehr zusammen.
    Hat jemand eine Idee, wo das Problem liegen könnte? (Den Encode mache ich mit MeGUI.)

    2 Mal editiert, zuletzt von Enorefe (24. Februar 2014 um 22:16)

  • :welcome:

    Interessant, die Kurzanalyse gibt erst mal keinen Hinweis auf variable Framerate. Eine ausführliche Analyse mit MediaInfo könnte mehr verraten; außerdem schau mal, was AviSynth direkt nach dem Laden via FFMS2 über dieses Video glaubt:

    Code
    LoadPlugin("C:\Program Files (x86)\MeGUI\tools\ffms\ffms2.dll")
    FFVideoSource("D:\FTP\FRTC.mkv", threads=1)
    Info()
  • Ich bekomme folgende Infos angezeigt:

    Frame 0 of 33629
    Time: 00:00:00:000 of 00:22:59:729
    ColorSpace: YV12
    Width: 720 pixels, Height: 480 pixels.
    Frames per second: 24.3736 (24398/1001)
    FieldBased (Separated) Video: NO
    Parity: Assumed Bottom Field First
    Video Pitch: 736 bytes.

  • Interessant, dann kommt vermutlich FFMS2 bei der Decodierung etwas durcheinander.

    Über die Ursache zu spekulieren wird mit so wenig Wissen noch nicht viel nützen (den Verdacht, dass hier wegen nicht zusammenpassender Tonspuren gestreckt/gestaucht wird, könnte ich bisher nicht mit Fingerzeig auf eine Protokollausgabe belegen).

    Die ausführliche MediaInfo-Analyse wäre schon nützlich, auch nicht nur von der Videospur, sondern vom gesamten Inhalt. Und wahrscheinlich können uns Programme aus dem mkvtoolnix-Paket auch noch ein paar wertvolle Hinweise liefern.

  • Wenn ich die Quell-Datei mit mkv-info öffne, erhalte ich folgende Informationen:

    (MKVInfo) |+ Segment information
    (MKVInfo) | + Timecode scale: 1000000
    (MKVInfo) | + Muxing application: libebml v0.7.7 + libmatroska v0.8.0
    (MKVInfo) | + Writing application: mkvmerge v2.0.0 ('After The Rain Has Fallen') built on Jan 13 2007 19:58:56
    (MKVInfo) | + Duration: 1379.754s (00:22:59.754)
    (MKVInfo) | + Date: Mon Jan 20 02:31:31 2007 UTC
    (MKVInfo) | + Title: Video
    (MKVInfo) | + Segment UID: 0xb6 0xd2 0x17 0xb1 0x01 0xfd 0x4d 0xee 0xa8 0x5f 0x05 0xc5 0x7e 0xaa 0x6b 0x2f
    (MKVInfo) |+ Segment tracks
    (MKVInfo) | + A track
    (MKVInfo) | + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
    (MKVInfo) | + Track UID: 2678992730
    (MKVInfo) | + Track type: audio
    (MKVInfo) | + Enabled: 1
    (MKVInfo) | + Default flag: 1
    (MKVInfo) | + Forced flag: 0
    (MKVInfo) | + Lacing flag: 1
    (MKVInfo) | + MinCache: 0
    (MKVInfo) | + Timecode scale: 1
    (MKVInfo) | + Max BlockAddition ID: 0
    (MKVInfo) | + Codec ID: A_AAC
    (MKVInfo) | + Codec decode all: 1
    (MKVInfo) | + CodecPrivate, length 5
    (MKVInfo) | + Default duration: 21.333ms (46.875 frames/fields per second for a video track)
    (MKVInfo) | + Language: eng
    (MKVInfo) | + Name: Audio
    (MKVInfo) | + Audio track
    (MKVInfo) | + Sampling frequency: 48000
    (MKVInfo) | + Channels: 2
    (MKVInfo) | + A track
    (MKVInfo) | + Track number: 2 (track ID for mkvmerge & mkvextract: 3)
    (MKVInfo) | + Track UID: 2756485413
    (MKVInfo) | + Track type: video
    (MKVInfo) | + Enabled: 1
    (MKVInfo) | + Default flag: 1
    (MKVInfo) | + Forced flag: 0
    (MKVInfo) | + Lacing flag: 0
    (MKVInfo) | + MinCache: 1
    (MKVInfo) | + Timecode scale: 1
    (MKVInfo) | + Max BlockAddition ID: 0
    (MKVInfo) | + Codec ID: V_MPEG4/ISO/AVC
    (MKVInfo) | + Codec decode all: 1
    (MKVInfo) | + CodecPrivate, length 131 (h.264 profile: High @L5.1)
    (MKVInfo) | + Default duration: 33.367ms (29.970 frames/fields per second for a video track)
    (MKVInfo) | + Language: eng
    (MKVInfo) | + Name: Video
    (MKVInfo) | + Video track
    (MKVInfo) | + Pixel width: 720
    (MKVInfo) | + Pixel height: 480
    (MKVInfo) | + Interlaced: 0
    (MKVInfo) | + Display width: 720
    (MKVInfo) | + Display height: 540
    (MKVInfo) |+ EbmlVoid (size: 1024)

  • Enorefe
    Mach bitte auch mal einen Gegentest mit LSMASHSource (ebenfalls bei MeGUI mit enthalten), um auszuschließen bzw. zu bestätigen, dass FFMS2 "rum spinnt":

    Code
    LoadPlugin("C:\Program Files (x86)\MeGUI\tools\lsmash\LSMASHSource.dll")
    LWLibavVideoSource("D:\FTP\FRTC.mkv")
    Info()

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Beim Versuch, die Datei mit LSMASHSource zu öffnen, bekomme ich einen Fehler "LoadPlugin: unable to load "C:\Program Files (x86)\MeGUI\tools\lsmash\LSMASHSource.dll" (Die Datei existiert aber, und das Verzeichnis ist auch richtig.)

    Edit: Wenn ich's mit DirectShowSource öffne ergibt sich:

    Frame 0 of 41350
    Time: 00:00:00:000 of 00:22:59:713
    ColorSpace: YUY2
    Width: 720 pixels, Height: 480 pixels.
    Frames per second: 29.9700 (10000000/333667)
    FieldBased (Separated) Video: NO
    Parity: Bottom Field First
    Video Pitch: 1440 bytes.

    Einmal editiert, zuletzt von Enorefe (24. Februar 2014 um 23:09)

  • Was sagt denn MeGUI (in seinem Updater) darüber, welche Versionen von FFMS2 und L-SMASH Works vorhanden sind?

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Hmmm... sehr merkwürdig. Befindet sich die Datei msvcr120.dll mit im Verzeichnis lsmash???

    Falls 'nein': hol dir LSMASHSource.dll und msvcr120.dll von hier, kopiere sie in das lsmash Verzeichnis und probiere danach erneut das AviSynth-Script zu laden.

    Falls 'ja': kopiere die msvcr120.dll aus dem lsmash Verzeichnis zusätzlich in den SysWOW64 Ordner vom Windows Verzeichnis und probiere danach erneut das AviSynth-Script zu laden.

    LSMASH ist auf jeden Fall FFMS2 (und DirectShowSource sowieso) vorzuziehen, da es wesentlich stabiler und fehlerfreier läuft.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • in der 64 bit-Version im SysWoW64 Ordner und in der 32 bit-Version im System32 Ordner.


    Ich hoffe nicht - denn die 64bit-Versionen von DLLs gehören in den System32 Ordner, während 32bit-Versionen im SysWOW64 Ordner zu finden sind. Klingt unlogisch - ist aber aus Kompatibilitätsgründen so geregelt:

    http://de.wikipedia.org/wiki/WOW64#Reg…und_Dateisystem

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Hab die Dateien nochmal gelöscht und neu reingeschoben, jetzt bekomme ich "[Fatal]: Failed to avformat_open_input."

    Edit: Hab die Datei umbenannt, jetzt bekomme ich einen Output:

    Frame 0 of 33629
    Time: 00:00:00:000 of 00:22:59:738
    ColorSpace: YV12
    Width: 720 pixels, Height: 480 pixels.
    Frames per second: 24.3735 (9920/407)
    FieldBased (Separated) Video: NO
    Parity: Bottom Field First
    Video Pitch: 768 bytes.

    Einmal editiert, zuletzt von Enorefe (24. Februar 2014 um 23:44)

  • Das ist echt schräg :hm: . Du könntest jetzt nur noch versuchen, die Datei mal mit MKVMergeGUI neu zu muxen (MeGUI Installationsverzeichnis -> tools -> mkvmerge -> mmg.exe) und die neu erstelle MKV-Datei zu laden.

    Falls das nicht hilft:
    Befolge auch die Tipps von 'LigH' und liefere eine vollständige MediaInfo-Analyse der Problemdatei... und eventuell noch eine Analyse von mkvinfo (ebenfalls im mkvmerge Verzeichnis zu finden). Mich würde jedenfalls sehr interessieren, wie dieses Problem zustande kommt.

    Letztendlich könntest du aber auch alle Bedenken über Bord werfen und einfach DirectShowSource verwenden. In mir persönlich sträubt sich zwar (aufgrund negativer Erfahrungen) immer alles dagegen - aber wenn es funktioniert (und du im verwendeten DirectShow-Decoder keine unnötigen "Verschlimmbesserungsmaßnahmen" aktiviert hast, die das Bild eventuell versauen) spräche trotzdem nichts dagegen.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Ich werde mal einen Probe-Encode mit DirectShowSource machen, und morgen Bescheid geben, ob es geklappt hat. Danke auf jeden Fall schonmal für die schnelle Hilfe :)

  • Ich hoffe, dass das die richtigen Daten sind:

    Edit: Das sind jetzt die Daten der Datei, die ich auf Anraten von Tom neu gemuxed habe. Da hier genau dasselbe Problem auftritt, habe ich diese Datei genommen.

    MediaInfo:

    General
    Unique ID : 172928705437309032373858519136716853523 (0x8218DB71C2735F7798CE56FF86961113)
    Complete name : D:\FTP\FRTC.mkv
    Format : Matroska
    Format version : Version 4 / Version 2
    File size : 219 MiB
    Duration : 22mn 59s
    Overall bit rate : 1 330 Kbps
    Encoded date : UTC 2014-02-25 07:44:38
    Writing application : mkvmerge v6.7.0 ('Back to the Ground') 64bit built on Jan 8 2014 15:10:52
    Writing library : libebml v1.3.0 + libmatroska v1.4.1


    Video
    ID : 1
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : High@L5.1
    Format settings, CABAC : Yes
    Format settings, ReFrames : 8 frames
    Codec ID : V_MPEG4/ISO/AVC
    Duration : 22mn 59s
    Nominal bit rate : 1 511 Kbps
    Width : 720 pixels
    Height : 480 pixels
    Display aspect ratio : 4:3
    Original display aspect ratio : 3:2
    Frame rate mode : Constant
    Frame rate : 23.976 fps
    Original frame rate : 29.970 fps
    Standard : NTSC
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.182
    Writing library : x264 core 54 svn-620M
    Encoding settings : cabac=1 / ref=5 / deblock=1:-1:-1 / analyse=0x3:0x133 / me=esa / subme=7 / brdo=1 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=2 / deadzone=21,11 / chroma_qp_offset=0 / threads=1 / nr=0 / decimate=0 / mbaff=0 / bframes=2 / b_pyramid=1 / b_adapt=1 / b_bias=0 / direct=3 / wpredb=1 / bime=1 / keyint=250 / keyint_min=25 / scenecut=50 / rc=2pass / bitrate=1511 / ratetol=1.0 / rceq='blurCplx^(1-qComp)' / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / pb_ratio=1.30
    Language : English
    Default : Yes
    Forced : No


    Audio
    ID : 2
    Format : AAC
    Format/Info : Advanced Audio Codec
    Format profile : LC
    Codec ID : A_AAC
    Duration : 22mn 59s
    Channel(s) : 2 channels
    Channel positions : Front: L R
    Sampling rate : 48.0 KHz
    Compression mode : Lossy
    Language : English
    Default : Yes
    Forced : No

    MKVInfo:

    (MKVInfo) + EBML head
    (MKVInfo) |+ EBML version: 1
    (MKVInfo) |+ EBML read version: 1
    (MKVInfo) |+ EBML maximum ID length: 4
    (MKVInfo) |+ EBML maximum size length: 8
    (MKVInfo) |+ Doc type: matroska
    (MKVInfo) |+ Doc type version: 4
    (MKVInfo) |+ Doc type read version: 2
    (MKVInfo) + Segment, size 229354163
    (MKVInfo) |+ Seek head
    (MKVInfo) | + Seek entry
    (MKVInfo) | + Seek ID: 0x15 0x49 0xa9 0x66 (KaxInfo)
    (MKVInfo) | + Seek position: 4099
    (MKVInfo) | + Seek entry
    (MKVInfo) | + Seek ID: 0x16 0x54 0xae 0x6b (KaxTracks)
    (MKVInfo) | + Seek position: 4264
    (MKVInfo) | + Seek entry
    (MKVInfo) | + Seek ID: 0x1c 0x53 0xbb 0x6b (KaxCues)
    (MKVInfo) | + Seek position: 229347932
    (MKVInfo) |+ EbmlVoid (size: 4044)
    (MKVInfo) |+ Segment information
    (MKVInfo) | + Timecode scale: 1000000
    (MKVInfo) | + Muxing application: libebml v1.3.0 + libmatroska v1.4.1
    (MKVInfo) | + Writing application: mkvmerge v6.7.0 ('Back to the Ground') 64bit built on Jan 8 2014 15:10:52
    (MKVInfo) | + Duration: 1379.754s (00:22:59.754)
    (MKVInfo) | + Date: Tue Feb 25 07:44:38 2014 UTC
    (MKVInfo) | + Segment UID: 0x82 0x18 0xdb 0x71 0xc2 0x73 0x5f 0x77 0x98 0xce 0x56 0xff 0x86 0x96 0x11 0x13
    (MKVInfo) |+ Segment tracks
    (MKVInfo) | + A track
    (MKVInfo) | + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
    (MKVInfo) | + Track UID: 2737053613
    (MKVInfo) | + Track type: video
    (MKVInfo) | + Lacing flag: 0
    (MKVInfo) | + MinCache: 1
    (MKVInfo) | + Codec ID: V_MPEG4/ISO/AVC
    (MKVInfo) | + CodecPrivate, length 131 (h.264 profile: High @L5.1)
    (MKVInfo) | + Default duration: 33.367ms (29.970 frames/fields per second for a video track)
    (MKVInfo) | + Video track
    (MKVInfo) | + Pixel width: 720
    (MKVInfo) | + Pixel height: 480
    (MKVInfo) | + Display width: 720
    (MKVInfo) | + Display height: 540
    (MKVInfo) | + A track
    (MKVInfo) | + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
    (MKVInfo) | + Track UID: 3005427097
    (MKVInfo) | + Track type: audio
    (MKVInfo) | + Codec ID: A_AAC
    (MKVInfo) | + CodecPrivate, length 5
    (MKVInfo) | + Default duration: 21.333ms (46.875 frames/fields per second for a video track)
    (MKVInfo) | + Audio track
    (MKVInfo) | + Sampling frequency: 48000
    (MKVInfo) | + Channels: 2
    (MKVInfo) |+ EbmlVoid (size: 1106)
    (MKVInfo) |+ Cluster

    Einmal editiert, zuletzt von Enorefe (25. Februar 2014 um 09:03)

  • Also aufs neue, noch mal erklären, wie die MediaInfo-Analyse "vollständig" wird:

    a) CLI-Version: MediaInfo -f D:\FTP\FRTC.mkv > D:\FTP\FRTC.mkv.txt an der Eingabeaufforderung (cmd.exe)

    b) GUI-Version: Menü "Debug" - "Erweiterter Modus", dann MKV öffnen und Ausgabe im "Text"-Format exportieren

    Aber ich glaube, wichtige Details sehen wir hier schon: Es überrascht mich, dass es auch bei AVC ein Soft-Telecine gibt (23,976 zu 29,97 fps). Dabei sind wir aber immer noch weit von den unsinnigen 24.3735 fps entfernt...

  • MediaInfo (advanced):

    Einmal editiert, zuletzt von LigH (25. Februar 2014 um 09:36) aus folgendem Grund: Im CODE-Block ist es besser lesbar

  • Gut, danke ... insofern aber immer noch keine deutlichen Hinweise für mich, dass da jemand irgendeine Manipulation der Abspielgeschwindigkeit durch Matroska-Features versucht. Scheint für mich normales NTSC-FILM-Material zu sein, das (für mich überraschend) auf NTSC-Rate gebracht werden soll; bei DVDs ist "Soft Telecine" (der Player soll sich drum kümmern, einen 3:2-Pulldown durchzuführen) relativ üblich, bei MKV noch neu für mich. Sollte das die Ursache für die völlig verkorkste Framerate-Erkennung in AviSynth sein?!

    Man könnte jetzt die banale Lösung versuchen: AssumeFPS(24000, 1001) bzw. AssumeFPS(preset="ntsc_film") direkt nach der *Source().

Jetzt mitmachen!

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