Screenshots von DVB/ivtv

  • Hallo zusammen,
    ich habe mir mal gerade die Module für Perl Video::ivtv und Video::Capture::V4l kurz angeschaut.
    Für ersteres gibt es noch eine man page, bei zweiterem leider nur examples : (


    Jetzt habe ich ein paar Fragen:
    1. Kann mir jemand sagen wie Screenshots bei FF Karten gemacht werden.
    2. Gibt es bei der normalen Methode auch Probleme wenn das dvb devce (durch VDR) belegt ist?
    3. Ich sehe keine einfache Möglichkeit bei ivtv bzw. /dev/video0 ein Screenshot zu erhalten...


    ... ich habe auch fbgrab versucht, mit dem allerdings auch nur ein schwarzes Bild :( und ein anderes komisches von /dev/video48 kriegen können.
    Ich kann mit cat /dev/video0 > foo.mpg ein mpg erstellen. Davon dann das erste Bild rausschneiden und ich hätte ein screenshot, allerdings kann cat nicht auf das /dev/video0 device zugreifen wenn VDR läuft.


    Wäre sehr nett ein paar Hinweise zu erhalten.
    mfg

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • leider nicht mit ivtv!
    deswegen würde ich gerne wissen wie das "svdrpsend.pl grab" kommando funktioniert...

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • VDR definiert dafuer cDevice::GrabImage, dass dann von "Ausgabe"-Plugins implementiert wird - zB fuer DVB-FF-Karten cDvbDevice::GrabImage.
    Intern ruft VDR dann beim SVDRP-Kommando diese Methode des primären Devices auf.


    Nun hast du ein konzeptionelles Problem dabei: Das pvrinput-plugin (bzw. auch die PVR) ist ein Input-plugin, kann somit ein GrabImage sinnvollerweise nicht implementieren - zudem wuerde VDR den Code idR nicht aufrufen ... weil nicht primäres Device.


    Einfachster Weg wäre also zu klären, wie du an das simple v4l-Grab-Interface rankommst und dann deinen Screenshot mit externen Tools machen kannst.


    Auch interessant wäre, was du als Ausgabe-Device einsetzt und ob du dein Screenshot nich lieber da herholst (sofern das Plugin dazu dies implementiert).


    arghgra

  • Danke arghgra, genau das wollte ich erstmal wissen.
    hier ist das pvr350-plugin für den output zuständig.. das wird ja leider nicht gepflegt und der Autor ist hier wohl auch nicht aktiv :(
    Es tut aber auch seinen job bis auf 1-2 macken!


    Ich werde noch ein bisschen recherchieren


    mfg

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • Ahh ok - du benutzt eine pvr350 mit dem entsprechenden Plugin zur Ausgabe - das Plugin implementiert das GrabImage nicht.
    Je nach Aufbau der pvr-Treibers (Trennung von video- und osd-(fb)-device) wäre zu klaeren, welcher Inhalt (Bild/Osd) wo zu grabben ist. Wenn die Treiber ein v4l-kompatibles Device zumindest fuer das Bild unterstuetzen, koenntest du VDR-aehnlichen Code verwenden, um zumindest das Bild zu grabben.


    Sind alles Vermutungen, da ich den Aufbau der ivtv-Treiber nicht im geringsten kenne ;)


    arghgra

  • ja das wäre natürlich das optimalste, hier mal die README.devices von ivtv:


    mit fbgrab habe ich schon auf /dev/fb0 - ein schwarzes Bild - und mit der (ich glaube) -file option auf /dev/video48 ein verzerrtes komisches. aber mit cat /dev/video0 kriege ich das komplette Bild bzw. mpeg strom.

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • Das dürfte dann die Kombination aus /dev/video32 und /dev/fb[x] sein. Auf dem FB-Device duerfte nur was zu sehen sein, wenn auch ein OSD angezeigt wird.


    Alle anderen Devices resultieren darin, dass du MPEG dekodieren musst ... könnt ich fuers em84xx gebrauchen ;).


    arghgra

  • Aha, also könnte man das ivtv modul mit der Option "yuv-fixup=1" laden und hätte dann schonmal einen sauberen output im YUV Format an /dev/video32.. theoretisch


    haha.. krazz Du hast recht, hier habe ich mit fbgrab ohne parameter ein bild vom osd kriegen können
    ... und genau! /dev/video32 kann ich sonst, korrigiere 1er post, noch etwas von empfangen mit:
    fbgrab -f /dev/video32 -h 300 -w 300 -b 16 video32.png

  • also eine Frage ist wohl wie ich /dev/video32 (yuv) in ein anschaubares format bekomme... ?


    die zweite warum ich nicht einfach /dev/video0 benutzen kann wo der mpeg strom liegt

    Code
    (0:2)root@debvdr:~$ fbgrab -f /dev/video0 -h 300 -w 300 -b 16 file.png
    Error: Not enough memory or data


    mfg

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • Zitat

    Original von uzer
    also eine Frage ist wohl wie ich /dev/video32 (yuv) in ein anschaubares format bekomme... ?


    Musst mal gucken, ob du ein grab-Programm findest, was mit dem Format umgehen kann - oder eins, was das Format konvertiert.


    Zitat


    die zweite warum ich nicht einfach /dev/video0 benutzen kann wo der mpeg strom liegt

    Code
    (0:2)root@debvdr:~$ fbgrab -f /dev/video0 -h 300 -w 300 -b 16 file.png
    Error: Not enough memory or data


    mfg


    fbgrab kann wohl nur auf einem Framebuffer-Device arbeiten - was an sich logisch is ;). Es kann also aus dem laufenden Mpeg-Strom kein einzelnes Bild dekodieren. Will meinen: video0 ist kein normales Grab-Device ala FB oder v4l - deshalb werden die Tools darauf nicht arbeiten können.


    arghgra

  • fbgrab hat die -file funktion, damit kann ich wohl auch von foo.mpg das erste bild kriegen. Schau mal kurz hier:


    das foo.mpg wird mit -f erfolgreich umgewandelt, ich glaube das Bild entspricht auch dem rauschenden analog... alles auf /dev/video0 angewendet klappt nicht :(


    PS. und um den cat befehl abzusetzten musste ich halt erst vdr beenden und rmmod ausführen ...

  • Nochmal: wie soll fbgrab den mpeg2-stream dekodieren? Das ist kein fb-device, was du da abfragst - von den Fehlermeldungen während deiner Aufrufe mal abgesehen ;)


    Dass der File-Aufruf soweit was tut dürfte daran liegen, dass es einfach x*y pixel mit der Farbtiefe z aus dem File rausklaubt und als PNG wegschreibt.


    Du brauchst was, um zB ein dekodiertes Frame aus einem mpeg-stream zu bekommen - frag mich jetz aber nich, wo sowas dabei is ...


    arghgra


  • ja du hast wohl recht, obwohl er den befehl noch ausführt wenn ich die höhe und breite runtersetzte

    Code
    (0:2)root@debvdr:~$ fbgrab -f /dev/video0 -h 250 -w 250 -b 16 success.png
    Converting image from 16
    Now writing PNG file
    (0:2)root@debvdr:~$ mv success.png /home/td/
    (0:2)root@debvdr:~$ fbgrab -f /home/td/test.mpg -h 250 -w 250 -b 16 success2.png
    Converting image from 16
    Now writing PNG file


    ist aber nix mit success.. obwohl da phoenix auf video0 läuft wieder son schneebild :(

  • mh.. weisst Du zufällig was er mir hier sagen möchte?


    Code
    (0:2)root@debvdr:/usr/local/src/videodog-0.31$ ./videodog -s -d /dev/video0
    VIDIOCGMBUF: Invalid argument
    (0:2)root@debvdr:/usr/local/src/videodog-0.31$ ./videodog -s -d /dev/video32
    VIDIOCGMBUF: Invalid argument

    "[...]Next the VIDIOCGMBUF ioctl is issued. This reports the size of buffer to mmap and the offset within the buffer for each frame. The number of frames supported is device dependent and may only be one."

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll


    ... hat jemand diese avisynth.dll ?? die brauche ich um mit mplayer/mencoder auf video32 zuzugreifen... finde sie aber nirgendwo im netz! :(

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

  • ja, von dort hat ich schon das "all" paket gezogen und entpackt, da war die avisynth.dll aber auch nicht dabei :(

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2

Jetzt mitmachen!

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