VDRs StillPicture mit ffmpeg dekodieren - wie?

  • Hi,


    ich versuche grad mit ffmpeg die PES-Daten, die der VDR an ein Device als StillPicture über cDevice::StillPicture übergibt, zu dekodieren.


    Leider klappt das nicht wie gedacht - ffmpeg beschwert sich immer über die Daten, in etwa dieser Form:

    Code
    [mpeg2video @ 0x40670278]ac-tex damaged at 5 3
    [mpeg2video @ 0x40670278]Warning MVs not available
    [mpeg2video @ 0x40670278]concealing 1485 DC, 1485 AC, 1485 MV errors


    Entweder liefert avcodec_decode_video mir, dass er gar kein Frame finden konnte, oder es ist nur ein Block des Bildes dekodiert worden. Ein mehrmaliger Aufruf von avcodec_decode_video mit den gleichen Daten verbessert zwar das Problem, dass ffmpeg ein Frame findet, die dekodierten Bilddaten sehen aber immer noch kaputt aus (siehe Anhang).


    Was ich probiert habe:


    - Entfernen aller Non-Video PES-Pakete aus den Daten -> bringt nix
    - Übergabe nur der Video-ES-Daten an ffmpeg -> bringt nix
    - neue (SVN-Snapshot)/alte(0.49pre1) ffmpeg Version - die ältere scheint noch mehr Probleme zu haben


    Ein ältere Version von softdevice hatte entsprechenden Code drinne: nur Video-PES-Pakete durchreichen und decode 4 mal aufrufen - tut hier jedoch leider nicht.


    Jemand ne Idee dazu oder ein Stück Code, was die StillDaten dekodiert?


    arghgra

  • Zitat

    Original von arghgra
    Jemand ne Idee dazu oder ein Stück Code, was die StillDaten dekodiert?


    Ein gangbarer Weg ist vdr2jpeg dient primär für die Dekodierung von Frames aus Aufnahmen.


    Allerdings wird auch index.vdr genutzt um die Position der GOP bzw. der I-Frames zu ermitteln. Danach werden ab dieser Position die PES Daten demuxt und als GOP an ffmpeg übergeben. Mit den älterene Version von ffmpeg klappte die GOP-Übergabe sogar per Memorydump. Aktuell wird die GOP als Datei gesichert, macht allerdings die Diagnose einfacher ...


    Der GOP-Demuxer basiert auf den Routinen von vdrsync, für die Generierung des dortigen Szenemenus mit den Vorschauszenen.


  • Thx für den Tipp


    Grad mal reingeschaut - ich werd das ganze mal so umbauen, dass ich nur die Video ES Daten des StillPictures in die decode Funktion stopfe und dann mal sehen, wie das Ergebnis hier ausschaut.


    arghgra

  • Soderle - Problem gelöst: Sowohl ffmpeg als auch libmpeg2 erwarten den Video-ES - den muss man sich also aus den StillPicture-Daten rauszubbeln.


    Bei ffmepg ist dann noch ein 3maliger Aufruf von avcodec_decode_video notwendig, damit er das IFrame dekodiert. Das wars - tut einwandfrei.


    arghgra

Jetzt mitmachen!

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