這是用於從服務器捕獲流式視頻的python代碼。但我需要編寫一個函數來從流中提取一幀。這將是一個按鈕。點擊它會顯示當前幀。我沒有想法。誰能幫我這個???GStreamer如何從流中提取視頻幀?
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)
我會試試它,thanx))) – 2012-08-24 17:09:40
imagefreeze將會創建一個視頻流一個圖像(重複圖像作爲一個流)。 Imho Oleg希望獲得相反的效果 - 來自流的單個圖像。 – ensonic 2012-08-28 09:00:05
'imagefreeze'將凍結所有進入的圖像源,並重復凍結的圖像。它可以用來從靜止圖像創建一個視頻流,但它也可以用來創建一個來自「現場」視頻流的凍結視頻流....至少我的例子凍結了「videotestsrc」(+'clockoverlay')和將重新凍結用戶交互 - 我認爲是OP請求 – 2012-08-28 11:11:17