• Ich hab ein dickes Problem...

    Ich hab ein Video mit x264 encodiert, auch ganz normal wie immer. Bei mir spielt er es normal ab, ob ich FFDShow, CoreAVC, DXVA oder FFMPEG2 verwende.
    Auch wenn ich die internen Decoder von MPCHC verwende, alles super.

    Jetzt kommt der Fehler, den ich auch nur so reproduzieren kann. Verwende ich DSS2, also decodiert es mein Freund (der nämlich das Problem bei sich hat...) mit dem Haali Media Splitter, so springt das Video beim 2. Bild einfach viele Frames weiter (seh ich nur per Dss2) und dann geht der Ton erst los. (alles asynchron...)
    Das Problem tritt nur bei x264 auf (Xvid z.B. nicht) und mit dem Haali Media Splitter als Decoder, soweit ich das sehe.

    Ich hab keine Ahnung woran es liegt...
    Kleiner Ausschnitt ohne Ton (1,24MB) http://www.mediafire.com/?wdedd2tjdmw
    Ich kann es hier gut sehen per AVSP und DSS2...

    Ich hab echt alles probiert, das Skript ist ganz einfach:
    Teil1 = AVISource("C:\...\Desktop\KaraokeOP.avi")
    Teil2 = AVISource("C:\...\Desktop\Episode 01.avi").trim(1438,30571)
    Teil3 = AVISource("C:\...\Desktop\KaraokeED.avi")
    Teil4 = AVISource("C:\...\Desktop\Episode 01.avi").trim(32365, 0)
    Teil1 + Teil2 + Teil3 + Teil4

    Da ich auch noch UT verwende, die aber korrekt zur richtigen Zeit eingeblendet werden, kann es doch nur am Haali Media Splitter liegen?
    In der Vorschau und so seh ich es auch immer richtig und andere x264 Versionen hab ich auch probiert.

  • Der Haali Media Splitter ist kein Decoder, sondern ein Splitter.

    MPEG4-AVC (H.264) ist ein erheblich komplexeres Format, das schon für das Abspielen wesentlich mehr Rechenzeit braucht als andere Formate. Ganz besonders merkt man das dann, wenn man zu einer Stelle im Video springen will, die sich nicht mal eben so anzeigen lässt, ohne vorher ein paar Sekunden Video zu decodieren, um die benötigten Referenzframes zur Rekonstruktion des angesprungenen Frames im Speicher zu halten. Erst recht schwierig wird das, wenn die Datei nicht die nötigen Markierungen zum schnellen Suchen in der Datei enthält (je nach Kontainerformat z.B. Schlüsselbildindex, Vorwärts- und Rückwärts-Verweise).

    Was mich jetzt etwas verwundert...

    a) In deinem Skript verwendest du AviSource. Das hat also nichts mit DDS2 zu tun.
    b) In deinem Skript verwendest du AVI-Dateien. Das hat also nichts mit x264 zu tun ... ;)

  • Quote

    a) In deinem Skript verwendest du AviSource. Das hat also nichts mit DDS2 zu tun.
    b) In deinem Skript verwendest du AVI-Dateien. Das hat also nichts mit x264 zu tun ...

    Kay, aber wieso springt er dann bei meinem Freund am Anfang viele Frames weiter und beginnt erst dann den Ton abzuspielen? und auch wenn h264 so komplex ist, ein Quad Core sollte es können und es ist immer die selbe stelle.
    Ich weiß auch das der Encode so richtig ist, sonst wäre was anderes verschoben...
    Ich kann es nur mit dss2 schaun, das wenn ich das skript am ende, also die mp4 mit dss2 anschaue, das er frames springt.

    Quote

    Der Haali Media Splitter ist kein Decoder, sondern ein Splitter.

    Wobei avss.dll doch mit Haali Media Splitter dekodiert oder den erzwingt.

    Durch deinen Beitrag hab ich auch erst durchs springen an Keyframes gedacht, nur sind die Frames, wenn man den Splitter verwendet nicht da, sodass springen eh egal wäre.
    Eine Erhöhung brachte auch nix...

    Und ja AviSource, in der Vorschau bei Megui, AVSP und überall wird es richtig dargestellt. Framerate ist nicht Variable, alle Decoder können es abspielen, aber wenn der Haalis Media Splitter dazu verwende wohl nicht.
    Achja nochmal... die Frames die er springt sind nach dem Encode mit dss2 z.B. nicht mehr da, gelöscht, weg. Wenn ich den Ausschnitt nur mit dss2 anschaue, springt er erst weiter, dann gehts normal weiter das anschaun, dann fängt er wieder von vorne an und dann stürzt er ab.
    Ich bin ratlos, deswegen überhaupt der Thread.

  • Quote

    b) In deinem Skript verwendest du AVI-Dateien. Das hat also nichts mit x264 zu tun ..

    Und doch hat es was damit zutun gehabt...
    Verwende Megui und rev1400, hab aber auch offizielle verwendet und paar Patches, nix...
    Hab gerade aus fun mal 1376 verwendet und schon hat der Splitter keine Probleme mehr mit und zeigt mir auch alle Frames so an, wie sie sein sollten.

    Das war aber auch von mir eher das letzte gewesen, was ich vermutete, kam wohl der Splitter mit irgendwas nach 1376 nicht klar.
    Mir aber egal, muss ich aber mal später drauf achten bei neueren Revisionen.

    Vielen dank LigH für deine Antwort :)

  • Es kann sein, dass neuere x264-Encoder-Versionen bei der Encodierung Funktionen verwenden, welche die Komplexität des Videos noch mal erheblich erhöhen, also die Abhängigkeiten zwischen den umgebenden Frames. Gerade die MBTree-Technik dürfte dazu gehören, aber vermutlich auch wie gewichteten P-Frames (weighted-p). Der Splitter kann da auch nicht viel dran ändern - jetzt müssen eben noch mehr Frames decodiert werden, bevor der Inhalt des angesprungenen Frames korrekt berechnet werden kann.
    __

    Du sagst, du verwendest MeGUI... aber die MeGUI erzeugt doch bei x264 nur MKV oder MP4, aber bestimmt nicht AVI?

    MKV oder MP4 kann man aber nicht mit AviSource() öffnen.

  • Nene, ich encode schon unkomprimierte AVI-Dateien, aber in x264 mit mp4 Container.
    Deswegen auch das "Xvid geht z.B." in Klammern paar Posts zuvor.

    Ich konnt den Fehler nur durch das aufrufen per Avisynth mit DSS2 nachvollziehen, weil ihn nicht sehe und ich mit FFDShow decodiere.

    Quote

    Der Splitter kann da auch nicht viel dran ändern - jetzt müssen eben noch mehr Frames decodiert werden, bevor der Inhalt des angesprungenen Frames korrekt berechnet werden kann.

    Nach x264 1374 wurd aber kein MBTree oder andere neue Funktionen, die den Prozessor mehr beeinträchtigen, hinzugefügt.
    Muss übrigens zwischen 1374 und 1391 liegen. Da 1391 gleichen Fehler hatte wie 1400, dachte ich das es nicht dran liegt.

    Edited once, last by Lugia25000 (January 25, 2010 at 12:44 PM).

  • Mit x264 v1391 wurden zB auch neue Inputformate hinzugefügt (lavf und ffms).
    Ich muß zB in meiner Config nun x264 mitteilen, welcher Demuxer verwendet werden soll (--demuxer yuv in meinem Fall).
    Standard wäre --demuxer auto, aber das funktioniert nicht immer.

  • Ich verstehe mal wider nur Banhof :) DSS2 = DirectShowSource ?
    Aus Bequemlichkeit benutze ich ffmpegsource, zum Testen mit dem WMP benutze ich anstatt des HM-Splitter lieber MP4Splitter.ax, reicht für meine zwecke und macht keine Probleme.
    Bei neueren Versionen von Mencoder habe ich Probleme mit b_pyramid bemerkt eventuell gibt es mit der x264.exe ähnliche Probleme.

  • Ich verstehe mal wider nur Banhof :) DSS2 = DirectShowSource ?

    Im Haali Media Splitter gibts eine dll -> avss.dll, das ist Haalis Directshow Filter -> Directshowsource2, aufruf Dss2("....",fps=..) Konvertiert automatisch Variable Frameraten von Videos in Konstante.

    Ich kann auch nur raten, woran es lag. Muss wohl deswegen erstmal alte Rev verwenden, damit es auch überall klappt.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!