Skip to main content
 首页 » 编程设计

python之GStreamer 如何从流中提取视频帧

2025年05月04日13jiqing9006

这是用于从服务器捕获流式视频的 python 代码。但我需要编写一个函数来从流中提取一帧。这将是一个按钮。单击它将显示当前帧。我没有想法。谁能帮我这个???

    self.player = gst.Pipeline("player") 
    self.source = gst.element_factory_make("uridecodebin", "video-source") 
    #self.source = gst.element_factory_make("playbin2", "video-source") 
    sink = gst.element_factory_make("xvimagesink", "video-output") 
    colorspace = gst.element_factory_make("ffmpegcolorspace") 
    scale = gst.element_factory_make("videoscale") 
 
    self.source.set_property("uri",\ 
    "http://10.10.25.4:12345/webcam.flv") 
 
    caps = gst.Caps("video/x-raw-yuv, width=640, height=480, framerate=20/1") 
    myfilter = gst.element_factory_make("capsfilter", "myfilter") 
    myfilter.set_property("caps", caps)  # ################ 
 
    clr_sink = colorspace.get_pad("sink") 
    self.source.connect("pad-added", self.on_pad_added, clr_sink) 
 
    self.player.add(self.source, colorspace, scale, myfilter, sink) 
    gst.element_link_many(colorspace, scale, myfilter, sink) 
 
    self.bus = self.player.get_bus() 
    self.bus.add_signal_watch() 
    self.bus.connect('message', self.__on_message) 
 
    self.player.set_state(gst.STATE_PLAYING) 

请您参考如下方法:

如果可以使用playbin2,就可以使用“convert-frame” Action 信号。否则查看实现和重用。