我有两个媒体文件(比如“file0”和“file1”)和
我想将它们合并成一个具有“画中画”效果的单个 -
“file0”中的内容将显示在整个窗口中,
并且“file1”中的内容将显示在左上角
较小的盒子。
还有一点是应该呈现来自“file1”的内容
从基准时间开始的一段时间后,在标记为“X1”的点上
下图。
换句话说,如果我将“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 调用)
最佳答案
最后得到答案:可以通过调用 gst-pad-set-offset用于 videomixer 和 audiomixer 元素的特定接收器垫。因此,在上面的示例中,您将获得视频和音频混合器的 sink_1 垫,并通过调用“gst-pad-set-offset”来指定偏移量。奇迹般有效。
特别感谢 Sebastian Dröge,他的回答非常好 similar question
关于time - gstreamer:如何改变从文件中提取的一个流的渲染时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37675659/