2013-05-07 223 views
1

我试图通过网络流式传输视频。目前我正在使用gstreamer。但是,一旦它到达网络的另一端,我需要能够在框架中添加一些东西。Gstreamer从流中提取帧

我想知道是否有办法从流中提取一帧,修改它,然后将其插回到要显示的流中。如果它不能插回到蒸汽中,那么我可以使用不同的方法来显示帧,这是我真正需要弄清楚的提取。

帧操作将使用python完成,一旦我有正确的gstreamer命令,我会试图在pygst中实现它。

代码发送视频:

gst-launch-0.10 v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' ! x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=1234 

和代码接收:

gst-launch-0.10 udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false 

任何帮助将非常感激。

回答

1

你可以这样做两种方式

  1. 写插件:必须适应在GStreamer库

  2. 使用App src和应用汇。 这将允许你做你想做的事情。

如果操作更好描述也许有一个Gstreamer插件可以帮助吗?

+0

我正在尝试在视频Feed上放置叠加层,同时还有一些元素与Feed进行交互。例如,覆盖层是一个鱼缸,如果屏幕上出现一个人的脸,那么我希望鱼游到他们的脸上。该程序被设计为位于两个位置之间的“虫洞”,所以如果两侧都有人,我希望覆盖层淡出,以便人们可以通过虫洞进行通话。 – 2013-05-08 14:08:19

+0

如果你已经有了它的组件appsrc和appsink将工作得很好。这完全是为了您定义的目的。有一个覆盖插件可用alpha混合,但可能无法做你所要求的。 – av501 2013-05-08 17:49:29

+0

该插件的+1。如果你想修改每一帧,你想从管道内完成。看看例如几何变换插件的例子 – ensonic 2013-05-08 20:09:15