简体   繁体   English

GStreamer将appsrc附加到另一个管道

[英]GStreamer attaching appsrc to another pipeline

I am new to GStreamer following is the issue I am facing 我是GStreamer的新手,以下是我面临的问题

Pipeline 1 管道1

v4l2src device=/dev/video241 ! v4l2src device = / dev / video241! video/x-h264,height=720,width=1280,framerate=30/1 ! video / x-h264,height = 720,width = 1280,framerate = 30/1! tvcameradmx name=demux demux.video_0 ! tvcameradmx名称= demux demux.video_0! queue ! 排队! omx_h264dec ! omx_h264dec! xvimagesink xvimagesink

Pipeline 2 管道2

appsrc ! appsrc! video/x-h264,height=720,width=1280,framerate=30/1 ! video / x-h264,height = 720,width = 1280,framerate = 30/1! avimux ! avimux! filesink 文件接收

I want to attach appsrc to the queue of pipeline 1 我想将appsrc附加到管道1的队列中

For this I am using appsrc in push mode. 为此,我在推送模式下使用appsrc。

  1. I have created a callback for "need-data" signal 我已经为“需要数据”信号创建了一个回调
  2. This callback is triggered when pipeline 2 goes from paused to playing state 当管道2从暂停状态变为播放状态时,触发此回调
  3. Now to push queue buffer I have to use gst_app_src_push_buffer. 现在要推送队列缓冲区,我必须使用gst_app_src_push_buffer。

My question is how can I retrieve the buffers from the queue ???? 我的问题是如何从队列中检索缓冲区?

If you're trying to go from v4l2, to a file sink and X, you'll want to use a tee, as JPS indicates. 如果您尝试从v4l2转到文件接收器和X,则需要使用T形,如JPS所示。 The pipeline would become something along these lines: 管道将变成以下路线:

v4l2src device=/dev/video241 ! video/x-h264,height=720,width=1280,framerate=30/1 ! tvcameradmx name=demux demux.video_0 ! tee name=t ! queue ! omx_h264dec ! xvimagesink t. ! queue ! avimux ! filesink location=...

After creating a tee and naming it ("t" in this case), you can reference it again in the pipeline by appending "." 创建一个tee并命名(在本例中为“ t”)后,您可以在管道中通过添加“”再次引用它。 after it. 之后。 It then becomes a sort of new source element. 然后,它成为一种新的源元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM