gstreamer:如何改变从文件中获取一个流的渲染时间

时间:2016-06-07 09:36:23

标签: time rendering gstreamer offset

我有两个媒体文件(例如" file0"和" file1")和 我想将它们合并为一个单独的"画中画"效果 - 来自" file0"的内容要在整个窗口上显示, 以及来自" file1"的内容将显示在左上角 小盒子。

还有一点是来自" file1"的内容。应该呈现 一段时间后的基准时间,标记为" X1"上 下图。

enter image description here

换句话说,如果我采取" videotestsrc"作为视频源输入, 我会得到以下示例管道,说明我需要什么 得到这项任务的结果:

gst-launch-1.0 -ev \
 videotestsrc pattern="snow" num_buffers=100 ! queue ! videoscale ! capsfilter caps="video/x-raw,width=320,height=240,framerate=15/1" ! videoconvert ! videomixer.sink_0 \
 videotestsrc pattern=5 timestamp-offset=3000000000 num_buffers=30 ! queue ! videoscale ! capsfilter caps="video/x-raw,width=120,height=80,framerate=15/1" ! videoconvert ! videomixer.sink_1  \
 videomixer name="videomixer" ! autovideosink 

(你会看到白雪皑皑的320x240窗口出现小绿框 从开始三秒后持续两秒钟)

所以,问题是 - 什么是改变渲染时间的最佳方法 来自file1的内容? (通过gstreamer插件,在管道中指定参数,或通过执行API调用)

1 个答案:

答案 0 :(得分:2)

最后答案:可以通过调用gst-pad-set-offset来获取视频混合器和音频混合器元件的特定接收器。因此,在上面的示例中,您将获得视频和音频混合器的sink_1打击垫,并通过调用'gst-pad-set-offset'来指定偏移量。像魅力一样。

特别感谢SebastianDröge非常回答similar question