如何将实时源和非实时源与GStreamer videomixer插件混合使用?
Gst-launch在混合uridecodebin(某些mpeg视频)& videotestsrc
gst-launch \
videomixer name=mix sink_0::zorder=0 sink_1::zorder=1 ! ffmpegcolorspace ! autovideosink \
uridecodebin uri=file:///test.mpg ! timeoverlay ! videoscale ! video/x-raw-yuv,width=704 ,height=576 ! queue ! mix.sink_0 \
videotestsrc ! video/x-raw-yuv, width=176,height=144 ! queue ! mix.sink_1
但如果我将两个源都改为mpeg视频,那么它就可以了,
gst-launch
videomixer name=mix sink_0::zorder=0 sink_1::zorder=1 ! ffmpegcolorspace ! autovideosink
uridecodebin uri=file:///test.mpg ! timeoverlay ! videoscale ! video/x-raw-yuv,width=704 ,height=576 ! queue ! mix.sink_0
uridecodebin uri=file:///test.mpg ! timeoverlay ! videoscale ! video/x-raw-yuv,width=176,height=144 ! queue ! mix.sink_1
答案 0 :(得分:0)
我似乎犯了一个愚蠢的错误。以下是我对此问题的回答: 使用上述命令和测试的视频剪辑,它们输出不同的视频格式。 在将videotestsrc的视频格式强制转换为I420后,它可以正常工作。
这是一个混合的命令:
gst-launch -v videomixer name = mix sink_0 :: zorder = 0 sink_1 :: zorder = 1! ffmpegcolorspace! autovideosink uridecodebin uri = file:///media/sf_share/test.mpg!时间延迟!视频! video / x-raw-yuv,width = 704,height = 576! videorate force-fps = -1!排队! mix.sink_0 videotestsrc! video / x-raw-yuv,width = 352,height = 288,format =(fourcc)I420!时间延迟!排队! mix.sink_1