本文介绍了GStreamer如何从流中提取视频帧?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是用于从服务器捕获流视频的python代码.但是我需要编写一个函数从流中提取一帧.这将是一个按钮.单击后将显示当前帧.我没主意谁能帮我这个???
This is python code for capturing streaming video from server. but I need to write a function to extract one frame from the flow. It will be a button. On click it will show current frame. I have no ideas. Can anyone help me with this???
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)
您要使用imagefreeze
元素的
推荐答案
.像这样:
#!/usr/bin/python
import pygst
pygst.require("0.10")
import gst
player = gst.Pipeline("player")
source = gst.element_factory_make("videotestsrc", "testsource")
effect = gst.element_factory_make("clockoverlay", "clock")
freeze = gst.element_factory_make("imagefreeze", "freeze")
colorspace = gst.element_factory_make("ffmpegcolorspace", "colorspace")
sink = gst.element_factory_make("ximagesink", "imagesink")
player.add(source, effect, freeze, colorspace, sink)
gst.element_link_many(source, effect, freeze, colorspace, sink)
player.set_state(gst.STATE_PLAYING)
while True:
inp = raw_input("Press enter:")
player.set_state(gst.STATE_READY)
player.set_state(gst.STATE_PLAYING)
每当您在控制台中单击输入"时,都会获取新的屏幕截图(来自带有Clockoverlay的视频测试)并显示.
whenever you hit "enter" in the console a new screenshot will be taken (from the videotest with clockoverlay) and displayed.
这篇关于GStreamer如何从流中提取视频帧?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!