2016-03-21 3 views
0

Я создаю конвейер, где мне нужно мультиплексировать несколько видео (в этом случае в этом случае) в мультиплексор (multistreamscimux). Когда я строю трубопровод, он бросает ошибочный конвейер: неожиданная ссылка.gstreamer mux вызывает ошибочный конвейер

Следующий псевдоним генерируется из конвейера, который мультиплексирует одно видео. Я пытаюсь создать канал, начинающийся с rtpbin, который переходит в multistreamrtpscimux.rtpsrc_2. Но я думаю, что могу ошибаться в том, как я указываю источник мультии и приемники. Я попробовал те, что были упомянуты в here, но не смог его решить. Любая помощь приветствуется.

enter image description here

Вот фактический трубопровод, который я пытаюсь построить.

gst-launch-1.0 -v rtpbin name=rtpbin_0 videotestsrc pattern=ball is-live=true 
name=vidsource_0 ! video/x-raw, framerate=30/1, width=180, height=90 ! textoverlay 
text="" valignment=4 ! x264enc aud=false name=videoenc_0 ! video/x-h264, 
profile=baseline, stream-format=byte-stream,alignment=au ! rtph264pay mtu=1256 
pt=109 ! multistreamrtpmux name=multirtpmux_0 csis-string="22446601" 
vid-headerext-id=1 vid-header-extension-string="04" frame-marking-headerext-id=2 
frame-marking-header-extension-string="48" ! msrtpscimux.rtpsink_0 
multistreamrtpscimux name=msrtpscimux ! rtpbin name=rtpbin_1 videotestsrc pattern=ball 
is-live=true name=vidsource_1 ! video/x-raw, framerate=30/1, width=180, height=90 
! textoverlay text="" valignment=4 ! x264enc aud=false name=videoenc_1 ! 
video/x-h264, profile=baseline, stream-format=byte-stream,alignment=au ! 
rtph264pay mtu=1256 pt=109 ! multistreamrtpmux name=multirtpmux_1 
csis-string="22446601" vid-headerext-id=1 vid-header-extension-string="04" 
frame-marking-headerext-id=2 frame-marking-header-extension-string="48" ! 
multirtpmux_1.rtpsrc msrtpscimux.rtpsink_1 msrtpscimux. msrtpscimux.rtpsrc ! 
netsim drop-probability=0.0 delay-probability=0.0 ! 
application/x-rtp ! rtpbin_0.send_rtp_sink_0 rtpbin_0.send_rtp_src_0 ! 
multisocketudpsink name=videosink rtpbin_0.send_rtcp_src_0 ! 
multisocketudpsink name=rtcpsink sync=false async=false 

ответ

0

Я был в состоянии решить эту проблему, указав sinkpads на мультиплексорах элемента Я хочу подключиться в каждом из субпотока, а затем, наконец, указать мультиплексорный элемент с его параметрами. краткий пример, как показано ниже .. для подключения

[videotestsrc]->[multirtpmux]--[sinkpad_0    ] 
           |  msrtpscimux  | 
[videotestsrc]->[multirtpmux]--[sinkpad_1    ] 

По указанным выше я использовал

videotestsrc pattern=ball ! multistreamrtpmux name=multirtpmux_0 ! \ 
msrtpscimux.rtpsink_0 videotestsrc pattern=red ! \ 
multistreamrtpmux name=multirtpmux_1 ! msrtpscimux.rtpsink_3 \ 
multistreamrtpscimux name=msrtpscimux 

Примечание: я не использую трубу между msrtpscimux.rtpsink_3 multistreamrtpscimux именем = msrtpscimux, чтобы указать, что я использую другой подпоток

Смежные вопросы