加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从视频源(网络摄像头)发出新帧信号的Gstreamer消息

发布时间:2020-12-20 13:31:38 所属栏目:Python 来源:网络整理
导读:我正在尝试使用gstreamer将来自网络摄像头的流保存为一系列图像.到目前为止我已经编写了这段代码…… #!/usr/bin/pythonimport sys,osimport pygtk,gtk,gobjectimport pygstpygst.require("0.10")import gst def __init__(self): #.... # Code to create a g
我正在尝试使用gstreamer将来自网络摄像头的流保存为一系列图像.到目前为止我已经编写了这段代码……

#!/usr/bin/python
import sys,os
import pygtk,gtk,gobject
import pygst
pygst.require("0.10")
import gst

 def __init__(self):
      #.... 
      # Code to create a gtk Window
      #....
      self.player = gst.Pipeline("player")
      source = gst.element_factory_make("v4l2src","video-source")
      sink = gst.element_factory_make("xvimagesink","video-output")
      caps = gst.Caps("video/x-raw-yuv,width=640,height=480")
      filter = gst.element_factory_make("capsfilter","filter")
      filter.set_property("caps",caps)
      self.player.add(source,filter,sink)
      gst.element_link_many(source,sink)

在此之后,我试图通过总线创建一个信号来侦听来自源或接收器的任何消息,以指示已发送或接收到新帧,以便可以保存它.

bus = self.player.get_bus()
      bus.add_signal_watch()
      bus.connect("message::any",self.save_file,"Save file")

save_file是我的回调,我想保存文件.

def save_file(self,bus,msg):
      print  "SAVED A NEW FILE"

我有两个问题,

>如何调用此回调.消息:: any不起作用.
>调用此消息时,如何访问图像缓冲区.

更新(2012年4月12日):

几个链接供参考

> v4l的python接口.但它并没有为我工作.当我试图抓住12.04 Ubuntu时似乎崩溃了.
http://code.google.com/p/python-video4linux2/
>为感兴趣的人提供网络摄像头查看器代码.但这不是我想要的,因为它使用gst-launch并且不提供我想要的管道控制级别. http://pygstdocs.berlios.de/pygst-tutorial/webcam-viewer.html

解决方法

Gstreamer Bus不适用于此目的.放在那里的消息相当于一些特殊事件,如流结束,元素状态改变等.通过元素的缓冲区(图像)通常不会在总线上生成任何消息.

您可以考虑几种可能性:

>在videoink之前制作“tee”元素并将“multifilesink”与videosink并行连接(你可能想要看一些图像编码器,如pngenc或jpegenc,并在multifilesink之前放置其中一个)
>像之前一样,但使用“appsink”,它允许您处理缓冲区并随心所欲地执行任何操作
>如果要打开和关闭转储,请考虑使用“valve”元素

您可能希望在附加接收器上将“sync”属性设置为false(这会导致缓冲区尽快转储而不同步到时钟).考虑在tee之后添加一些队列(在ready-gt; paused过渡期间不会发生这种死锁).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读