Kan*_*ski 6 time rendering offset gstreamer
我有两个媒体文件(例如“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
Run Code Online (Sandbox Code Playgroud)
(您将看到雪白的 320x240 窗口,从开始三秒后持续两秒出现小绿框)
所以,问题是 - 改变 file1 渲染内容的时间的最佳方法是什么?(通过 gstreamer 插件,在管道中指定参数,或者通过执行 API 调用)
最后的答案:可以通过为视频混合器和音频混合器元素的特定接收器调用gst-pad-set-offset来实现。因此,在上面的示例中,您将获得视频和音频混合器的接收器_1 pad,并通过调用“gst-pad-set-offset”指定偏移量。奇迹般有效。
\n\n特别感谢 Sebastian Dr\xc3\xb6ge 回答了非常类似的问题
\n| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |