Gstreamer mit Pygame verbinden

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Aloah zusammen,

ich möchte mir den webcam Stream anzeigen lassen, allerdings möchte ich ebenfalls
das er mir den Stream innerhalb meines Fenstes aufmacht, ich hab gefunden wie es in GTK
funktioniert, für PyGame habe ich jedoch keine alternative Lösung gefunden.

Code: Alles auswählen

import pygame
import pygst
pygst.require("0.10")
import gst

class VideoStream():
    
    def __init__(self):
        pygame.init()
        self.init_surface()
        self.player = gst.parse_launch ("v4l2src ! autovideosink")
        self.run()
        
    def init_surface(self):
        self.WIDTH = 1000
        self.HEIGHT = 500
        window = pygame.display.set_mode((self.WIDTH, self.HEIGHT))
        pygame.display.set_caption('TESTTESTTESTTESTTESTTEST')
        self.screen = pygame.display.get_surface()
        background = pygame.Surface((self.WIDTH,self.HEIGHT))
            
    def run(self):
        while True:
            self.player.set_state(gst.STATE_PLAYING)
            #self.screen.blit(self.player, (0,0))
            #pygame.display.flip()


VideoStream()
    
Die beiden auskommentierten Zeilen funktionieren logischerweise nicht, da es sich um ein gstreamer objekt handelt...
Fällt jemandem ein workaround ein durch den ich mir das fenster doch noch innerhalb meines erzeugten PyGame fensters anzeigen lassen kann?

Über Hilfe würde ich mich freuen... ;)

Grüße Majin
Wendigo
User
Beiträge: 7
Registriert: Montag 2. August 2010, 08:09

Mit gstreamer hab ich mich leider bisher noch nicht befasst aber du könnstest das ganze auch komplett in pygame realisieren mit dem Camera Modul.
Hat allerdings noch experimentellen Status.
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Danke... :)
allerdings wollte ich das eigentlich vermeiden, ich hab das ganze auch schon mit opencv direkt gemacht, aber es gibt noch
andere programme die bei mir darauf laufen und die müsste ich dann portieren und da hab ich ehrlich gesagt weniger lust zu...

ich könnte aus jedem frame ein bild machen... allerdings finde ich die to.string methode von dem gst objekt nicht oO
also in der doku hab ichs gefunden, allerdings sagt der compiler das objekt hätte sowas nicht -.-
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

So sollte der Code in etwa aussehen...
allerdings bin ich immernoch nicht auf die entscheidenen Quellen gestoßen -.-

Code: Alles auswählen

    def run(self):
        while True:
            self.player.set_state(gst.STATE_PLAYING)
            pg_img = pygame.image.frombuffer(self.player.yxc , self.player.yxc, self.player.yxc)
            self.screen.blit(pg_img, (0,0))
            pygame.display.flip()
Antworten