Gstreamer画中画-两个文件并行播放

Gstreamer画中画-两个文件并行播放,gstreamer,pipeline,picture-in-picture,Gstreamer,Pipeline,Picture In Picture,我需要为“画中画”效果编写一个管道,以组合来自两个文件的媒体: 1) 第一个文件中的视频内容显示在完整窗口中 2) 第二个文件中的视频将调整大小并显示在窗口的左上角, 3) 来自两个文件的音频混合 4) 两个文件中的内容应同时播放 到目前为止,我获得了以下管道: gst-launch-1.0 -e \ filesrc name="src0" location=$FILE0 \ ! decodebin name="decodebin0" ! queue ! videoscale ! c

我需要为“画中画”效果编写一个管道,以组合来自两个文件的媒体:

1) 第一个文件中的视频内容显示在完整窗口中 2) 第二个文件中的视频将调整大小并显示在窗口的左上角, 3) 来自两个文件的音频混合 4) 两个文件中的内容应同时播放

到目前为止,我获得了以下管道:

gst-launch-1.0 -e \
  filesrc name="src0" location=$FILE0 \
    ! decodebin name="decodebin0" ! queue ! videoscale ! capsfilter caps="video/x-raw,width=120" ! videoconvert ! videomixer.sink_0  decodebin0. ! queue ! audioconvert ! audiomixer.sink_0 \
  filesrc name="src1" location=$FILE1 \
    ! decodebin name="decodebin1" ! queue ! videoscale ! capsfilter caps="video/x-raw" ! videoconvert ! videomixer.sink_1  decodebin1. ! queue ! audioconvert ! audiomixer.sink_1 \
   videomixer name="videomixer" ! autovideosink \
   audiomixer name="audiomixer" ! autoaudiosink
然而,它一个接一个地播放流,而不是并行播放。有人知道为了同时播放流,这里应该更改什么吗


Ps:附上可视化的管道图:

令人惊讶的是,管道中源的顺序确实很重要-在稍微修改管道并将带有“较大”框架的源放在第一个位置后,我能够得到预期的结果:

gst-launch-1.0 -ev \
  filesrc name="src1" location=$FILE1 \
   ! decodebin name="decodebin1" ! queue ! videoscale ! capsfilter caps="video/x-raw,framerate=15/1" ! videoconvert ! videomixer.sink_1  decodebin1. ! queue ! audioconvert name="ac1" \
  filesrc name="src0" location=$FILE0 \
   ! decodebin name="decodebin0" ! queue ! videoscale ! capsfilter caps="video/x-raw,width=120,framerate=15/1" ! videoconvert ! videomixer.sink_0  decodebin0. ! queue ! audioconvert name="ac0"\
   ac0. ! audiomixer.sink_0 \
   ac1. ! audiomixer.sink_1 \
  videomixer name="videomixer" ! autovideosink \
  audiomixer name="audiomixer" ! autoaudiosink \