Beiträge von LessThanJake

    Ja, der JW-Player ist in der Version 4.4 nicht mehr kostenlos. Die Version die ich hochgeladen habe ist v4.0. Die war noch komplett kostenlos zu haben. Wenn ich mich recht entsinne auch kommerziell, aber ohne Garantie. Ich habe keine Ahnung inwieweit sich die beiden Versionen (technisch) unterscheiden und ob man evtl. lizenzrechtliche Probleme bekommen kann, wenn einfach die alte v.4.0 benutzt wird. Wäre ja irgendwie quatsch alle Leute die noch diese Version in Verwendung haben nachträglich zu einer kleinen "Spende" aufzufordern. Aber ich lehne mich da mal lieber nicht zu weit aus dem Fenster.

    greets
    LTJ

    AVC Input für MeGUI über den AVS-Script-Creator:

    AVC-RAW-Stream -> nein
    AVC in AVI -> ja, DirectShowSource
    AVC in MKV -> ja, DirectShowSource
    AVC in MP4 -> ja DirectShowSource
    AVC-RAW vorher mit DGAVCDec indexiert -> ja .dga lässt sich öffnen (neu)

    Bei der Containerübergabe wird immer DSS benutzt. Der benutzte Decoder ist dann abhängig von der Merit-Einstufung. In der Regel ist ffdshow höher eingestuft als CoreAVC, dementsprechend wird der dann auch benutzt.
    Anstatt an den Merit-Werten zu drehen kann man sich aber auch einfach einen eigenen Filtergraphen bauen um sicher zu gehen.
    Allerdings ist DGAVCDec allen Varianten vorzuziehen, denn der Filter ist ja eben genau auf AVC zugeschnitten, es gibt eigentlich keinen Grund einer andere Methode nachzugehen.

    greets
    LTJ

    Es geht nicht darum, dass CodecPacks hier "nicht gern gesehen" sind, sondern darum, dass sie in der Regel mehr Probleme bereiten als lösen, was wiederum dazu führt, dass die Benutzer solcher hier Threads eröffnen, und fragen: "Warum geht Programm XY nicht, früher hat´s ja auch geklappt." Das deutet dann fast immer auf irgend einen Knoten im DirectShow-System hin und sowas kann man per Ferndiagnose eben nicht so ohne weiteres oder sogar garnicht lösen. Im Extremfall existiert auf dem betreffenden Rechner so ein Codec-Chaos, dass man die Probleme nur durch Neuaufsetzen des Systems beheben kann. Um diesem Vorzubeugen muss man nichts weiteres tun als gezielt die Codecs / Filter / Splitter etc. zu installieren, die man eben genau benötigt. Dazu analysiert man zuvor das Mediafile und informiert sich dann über den passenden Decoder und installiert ihn dann. Frage lieber hier vorher, welcher Filter für dein Problem angemessen ist, wenn du mal nicht weiter weist. Dabei haben beide Parteien gewonnen. Der Threadersteller hält sein System sauber und der potentiell Antwortende auf diesen Thread muss sich nicht wieder mit irgendeinem Codec-Salat auseinandersetzen.

    Vielleicht solltest du mal folgenden Beitrag lesen. Er ist etwas älter, aber im Kern immer noch völlig zutreffend:
    http://forum.chip.de/video-bearbeit…cks-532201.html

    greets
    LTJ


    ps: Dachte gerade Megui dient dazu schnell an codecs zu kommen. (update funktion?)
    wenn ich da falsch liege sorry.

    Die Updatefunktion von MeGUI ersetzt einfach nur die einzelnen Tools / AVS-Filter etc. durch aktuellere Versionen und bringt die GUI und die Profile auf den neusten Stand. Sie ist natürlich kein Onlinecodecpackinstaller.

    greets
    LTJ

    Willensstark
    Warum hast du eigentlich ständig Probleme damit, wenn jemand mit einem anderen Lösungsvorschlag besser zurecht kommt als mit deinem? Warum darf fuzzilein nicht als alternative Hilfe zu deinem Tutorial für Andere hier auf einen anderen Thread verlinken? Vielleicht solltest du mal darüber nachdenken, wie viel Hilfe du schon von anderen Usern aus diesem Forum bekommen hast um deine Tutorials überhaupt verfassen zu können anstatt deine kleinen Anleitungen als die ultimativen Lösungen schlechthin darzustellen.

    ---------

    Im Übrigen installiert MeGUI im Sinne von im System registrierten Codecs, Filtern, Splittern etc. rein garnichts. Das sind alles Standalone Tools und ein paar AVISynth-Filter-DLLs die in verschiedenen Unterordnern des Installationsverzeichnisses abgelegt werden und je nach Bedarf über die GUI angesprochen werden.

    greets
    LTJ

    Gibt es ein Byte das die Länge des PPS beschreibt ?


    Nein, gibt es nicht. Der Decodingprozess ist bei H264 nicht linear. Das heißt es gibt keine Struktur im Sinne von fest aneinandergereihten Bitschematas, die immer genau an der selben Stelle im Stream zu finden sind, wie bspw. beim MP3-Header. Vielmehr besteht ein H264-Stream aus einer Aneinandereihung von NAL-Units, deren Typ man nach oben erläuterter Regel bestimmen kann. Nach der Identifizierung wird jeder NALU-Typ nach eigenen Regeln dekodiert. Dabei sind einzelne Elemente innerhalb dieser NALU zum Teil wiederum mit unterschiedlichen Verfahren kodiert. Im Klartext heißt das man kann bspw. Element 3 erst auslesen, wenn Element 1 und 2 zuvor dekodiert wurden. Die NALU wird dann so Schritt für Schritt bis zum nächsten Startcode (00 00 00 01) durchgeparst. Wie lang die NALU in Bytes ist spielt dafür keine Rolle, deshalb wird das nirgends gespeichert.
    Wenn du wissen willst wie groß eine NALU in Bytes ist, kannst du sie im Hexeditor markiereren (Startcode bis nächster Startcode) und den Wert dann ablesen. Alternativ geben die diverse Analysetools aber auch die NALU-Size an, bspw h264parse von den mpeg4iptools oder ldecod_trace, hier werden die "emulation_prevention_three_bytes" allerdings rausgerechnet. Wenn du nichts programmieren willst, dann ist das aber eigentlich nicht weiter von Bedeutung und es reicht schon aus, wenn man den Stream anhand der Startcodes "lesen" und bearbeiten kann.

    greets
    LTJ

    1248 zum Smart-Rendering mit ffdshow und VD:
    Ich hatte das auch mal getestet, aber das ist (zumindest für mich) leider nicht zufriedenstellen.

    may24
    Das was du vorhast funktioniert mit Einschränkungen für einige Arten von H264-Streams auf jeden Fall. Ich hab das schon dutzende Male erfolgreich getestet. Vielleicht kann ich ein paar hilfreiche Hinweise beisteuern:

    Vorgehensweise mal zusammengefasst:

    • Bsp: H264-Stream (Source)
      | SPS0 | PPS0 | IDR PBBBPBBBPBPBBIPBB | IDR PBBBPBBPBBBPBPBBIPBB | IDR... |
    • GOP in die hineingeschnitten wird (rot) lokalisieren (Hex-Editor)
      | SPS0 | PPS0 | IDR PBBBPBBBPBPBBIPBB | IDR PBBBPBBPBBBPBPBBIPBB | IDR... |
    • Den Stream in drei einzelne Streams aufspalten (Reststream links -> blau, einzelne GOP -> rot und Reststream rechts -> grün) Das kann man alles mit nem halbwegs guten Hex-Editor (z.B. HxD) machen. Wichtig: Um die einzelne GOP (rot) mit DGAVCDec indexieren zu können, musst du zuerst noch die letzten, vor dieser GOP vorkommenden, SPS und PPS NALUs davorpacken, damit der Stream wieder "gültig" wird. Die gleichen SPS/PPS NALUs müssen auch vor das 3. Streamstück (grün) gesetzt werden, sonst kannst du das später nicht an die geschnittene GOP hängen.
    • Einzelne präparierte GOP (rot) mit DGAVCDec indexieren und ganz normal per AVISynth und trim() in zwei Teile encoden, ensprechend so, wie der Schnitt eben sein soll. Wichtig: Wenn du nicht exakt die gleichen Settings benutzt, mit der die Source encodet wurde, z.B. wenn du Sie gar nicht kennst, oder evtl. ein anderer H264-Encoder verwendet wurde, muss x264 zusätzlich mit der Option --sps-id "x" aufgerufen werden, wobei "x" nur von 0-31 gesetzt werden kann. Der Wert muss verschieden sein von der vorherigen SPS-ID, die du im Schritt zuvor an die Streams "angeklebt" hast. In der Regel reicht ein Wert verschieden von 0, wenn die Source schon mit x264 encodet wurde. Vorteil: Ab jetzt kannst du ansonsten (fast) beliebige x264 settings für das Reencoding verwenden.
    • Aus
      | SPS0 | PPS0 | IDR PBBBPBBPBBBPBPBBIPBB | 
      wird dann also z.B.
      | SPS1 | PPS1 | IDR PBBBPBB | Cut | SPS1 | PPS1 | IDR PBBBPBPBBIPBB |
    • Streams in der entsprechenden Reihenfolge danach einfach wieder zusammen bauen.
      Teil1:
      | SPS0 | PPS0 | IDR PBBBPBBBPBPBBIPBB | SPS1 | PPS1 | IDR PBBBPBB |
      Teil2:
      | SPS1 | PPS1 | IDR PBBBPBPBBIPBB |  SPS0 | PPS0 | IDR... |

    Hinweis: Die Streams sind danach in der Regel nur noch auf dem PC problemlos abzuspielen.
    ----------------------------


    ...
    Nur fehlt der Header des besagten Teils und so kann weder DGAVCIndex noch sonst ein Programm damit was anfangen
    ...
    Edit:
    Nur so'ne Idee: Der erste Teil wurde zwar auch mit x264 gecodert, jedoch mit ganz anderen Optionen. Muß ich also ein SPS der ersten IDR des zeiten Teilstücks voranstellen ? und kann ich das vom Original Stream kopieren ?

    Exakt! Siehe Punkt 3 und Punkt 4 oben. Deshalb immer mit nem Hexeditor alles schnippeln und zusammenbasteln. Folgend ein paar Hilfen zur Identifizierung einzelner NALUs.

    greets
    LTJ

    Hallo,

    seit kurzem habe ich Probleme beim Playback von jeglichen Audiofiles, die durch den OnBoard-Chip laufen. Alles was nicht 1:1 als AC3/DTS zum AV-Receiver durchgeschleift wird, stottert. Filter / Codecprobleme sind das wahrscheinlich nicht, denn eigens gebaute Graphen stottern auch. Unterschiedliche Audio-Renderer zeigen das gleiche Ergebnis. Neuer Treiber natürlich schon getestet.

    System:
    Win XP SP2 / altes Board Asus A8NE 939 / Realtek OnBoard
    MB per S/PDIF an AV-Receiver angeschlossen

    Hier ist ein Sample (10 MB WAV), welches ich über den Windows-Audio-Recorder mitgeschnitten habe und das Problem (hoffentlich) verdeutlichen kann.

    Tja, jetzt hab ich keine Ahnung wo ich noch suchen soll / kann. Es könnte ja auch sein, dass der Chip tatsächlich ne Macke hat. Also brauche ich

    • jemanden der dieses Problem schonmal gelöst hat
    • eine Möglichkeit den OnBoard-Chip sauber zu testen / analysieren
    • eine Möglichkeit alle anderen Audioformate neben AC3/DTS 1:1 zum A/V Receiver durchschleifen zu lassen. Das Live-AC3-Encoding in ffdshow klappt nämlich hervorragend, hilft aber nicht, wenn ffdshow nicht als Audio-Decoder fungieren kann oder andere Programme (WinAmp, PC-Games Audio-Output etc.) benutzt werden.

    Jemand Ideen?

    greets
    LTJ

    Framegenaues schneiden für MPEG2 ist doch ein alter, gut sitzender, Hut.
    Außerdem, warum ein kostenpflichtiges Tool benutzen, wenn es hervorragende alternative Freeware wie Mpeg2schnitt, Cuttermaran, ProjectX etc. gibt? H.264 ist der Knackpunkt. Für AVC gibt es nur nicht zufriedenstellende Ansätze.

    greets
    LTJ

    Da ist er wieder, in einer etwas überholteren Version (v.0.740b)

    Overview

    • A fast, capable, straightforward non-linear Editor and Analyser for transport streams (.ts and .m2ts) - e.g. camcorder (AVCHD), recorded TV, Blu-Ray Disc (BD), etc
    • Can edit (cut) commercials from captured sources with assisted commercial detection
    • Advanced technical features for expert users
    • Wide compatibility with input stream types and sources

    Featurelist
    http://www.bitstreamtools.com/index.php#features

    Download
    http://bitstreamtools.110mb.com/index.php

    doom9-Thread
    http://forum.doom9.org/showthread.php…&highlight=tspe

    greets
    LTJ

    Ich will nur ein paar Teststreams generieren. ;)

    ---------

    Puh jetzt kommt ein schwieriges Thema: AVC und Referenzframes.
    Ich lese immer und immer wieder die Passagen im Standard, aber irgendwie will es nicht so ganz "Klick" machen.
    Bleiben wir erstmal bei progressiven Streams die x264 erzeugt.

    Referenzframes identifizieren

    x264 verankert im SPS:
    gaps_in_frame_num_value_allowed_flag=0

    dann gilt

    nal_ref_idc != 0 -> Frame ist Ref-Frame
    nal_ref_idc = 0 -> Frame ist kein Ref-Frame

    Identifizierung IDR / I / P / B -> Slice-Header (SH), NALU-Type etc.

    -> OK

    --------------

    Decoding-Order / Display Order bestimmen

    Weiter gilt für x264 -> Storage Order = Decoding Order, denn
    SPS: pic_order_cnt_type = 0
    -> jeder SH enthält pic_order_cnt_lsb xx
    -> Decoding-order = pic_order_cnt_lsb / 2
    -> Display-Order = pic_order_cnt_lsb / 2 (aufsteigend sortiert)

    -> OK

    -------------

    Referenzframelisten

    Weiter:

    Ref-Frames werden in einem Decoded Picture Buffer (DPB) gespeichert, dessen Größe abhängig von der maximal zulässigen Anzahl an Ref-Frames ist (z.B. 3 Ref-Frames)

    Jetzt kommen ein paar Dinge, die ich nicht verstehe:
    Dokument-> Punkt 4
    Ref-Frames werden als "Short term reference pictures" oder als "Long term reference pictures" markiert. Wie genau wird das gemacht? (Ich weiß -> ITU-T-H264-8.2.4. aber das verstehe ich nicht).

    Danach werden Listen erstellt.
    P-Ref-Frames -> 1 Liste
    B-Ref-Frames -> 2 Listen

    Ich verstehe auch den Aufbau und die Aktualisierung (FirstIn-FirstOut oder so ähnlich) dieser Listen nicht.

    Und das, was mich am Ende eigentlich interessiert:
    Woher weiß ich bzw. der Decoder auf welches der Frames in der Liste (1. 2. 3. 4. oder sogar mehrere aus der Liste?) ein noch nicht decodiertes Frame referenziert um dekodiert werden zu können?

    Puh, schwere Kost.
    Wer kanns und macht sich die Mühe? :D
    Oder muss ich wieder mein schlechtes Englisch auspacken und rüber ins andere Forum? ;)

    greets
    LTJ

    Hallo,

    ich habe folgendes zu I-Frames in AVC gefunden:

    Zitat von english-doom9

    [Quelle]

    Frage:
    Kann man die Situation [IDR][P][I][P][IDR] irgendwie künstlich nachstellen? Ich habe noch nie "gesehen" dass x264 ein I-Frame setzt. Oder gibt es ein Sample von dem jemand weiß, dass x264 an einer bestimmten Stelle mit Sicherheit ein I-Frame setzt?

    greets
    LTJ

    Bei SMPlayer gibt es die Möglichkeit, den aktuellen Framecounter in der Statuszeile anzeigen zu lassen. Mit dem "Pause" Knopf kann man auch "Frame für Frame" durch das Video springen.

    Wird der aktuelle Framecount auch bei der Ausführung in der Konsole angezeigt?
    Dann könnte Selur versuchen die stdout Ausgabe abzufangen und den Framecount mit ein paar string-Funktionen und atoi einzulesen und intern verarbeiten. Evtl. Nachteil: Scrubben geht dann trotzdem nicht (oder doch?).

    greets
    LTJ