使用 filesrc mp4 文件的 Gstreamer 合成器

问题描述

我正在尝试习惯使用 gstreamer 合成器。 我有这个基本的样板示例工作。 (将 2 个 videotestsrc 并排合成):

gst-launch-1.0 compositor name=comp \
    sink_0::alpha=1 sink_0::xpos=0 sink_0::ypos=0 \
    sink_1::alpha=0.5 sink_1::xpos=320 sink_1::ypos=0 ! \
    queue2 ! video/x-raw,width=800,height=600 ! videoconvert ! xvimagesink \
    videotestsrc pattern=1 ! "video/x-raw" ! comp.sink_0 \
    videotestsrc pattern=8 ! "video/x-raw" ! comp.sink_1

然后我尝试将视频测试 src 之一更改为 mp4 文件 我知道这个命令行有效: gst-launch-1.0 filesrc location=tst.mp4 ! decodebin ! videoconvert ! autovideosink

所以我尝试将这两个工作管道结合起来

gst-launch-1.0 compositor name=comp \
    sink_0::alpha=1 sink_0::xpos=0 sink_0::ypos=0 \
    sink_1::alpha=0.5 sink_1::xpos=320 sink_1::ypos=0 ! \
    queue2 ! decodebin ! video/x-raw,height=600 ! videoconvert ! xvimagesink \
    videotestsrc pattern=1 ! "video/x-raw" ! comp.sink_0 \
    filesrc location=tst.mp4 ! "video/x-raw" ! comp.sink_1

当我运行此程序时,我收到一条错误消息,指出过滤器上限未完成指定输出格式.... 输出上限未固定。

我很肯定这一定是一个简单的语法错误。有谁知道如何修复我的管道?

解决方法

不,您需要使用使独立命令行工作的大部分元素。例如

gst-launch-1.0 compositor name=comp \
    sink_0::alpha=1 sink_0::xpos=0 sink_0::ypos=0 \
    sink_1::alpha=0.5 sink_1::xpos=320 sink_1::ypos=0 ! \
    queue2 ! decodebin ! video/x-raw,width=800,height=600 ! videoconvert ! xvimagesink \
    videotestsrc pattern=1 ! "video/x-raw" ! comp.sink_0 \
    filesrc location=tst.mp4 ! decodebin ! videoconvert ! comp.sink_1