Мне удалось достичь этого двумя способами
Подход 1) каждый отправитель будет отправлять на разные порты (0 - 65535) на сервере.Здесь вместо камеры используется 2 mp4 файла.
производитель1 : SRCID=1 PT=26 SERVER=127.0.0.1 PORT=5200 bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" filesrc location="video1.mp4" ! decodebin ! jpegenc ! rtpjpegpay ! "application/x-rtp,payload=$PT,clock-rate=90000,ssrc=(uint)$SRCID" ! r.send_rtp_sink_$SRCID r.send_rtp_src_$SRCID ! udpsink host=$SERVER port=$PORT'
производитель2 : SRCID=1 PT=26 SERVER=127.0.0.1 PORT=5201 bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" filesrc location="video2.mp4" ! decodebin ! jpegenc ! rtpjpegpay ! "application/x-rtp,payload=$PT,clock-rate=90000,ssrc=(uint)$SRCID" ! r.send_rtp_sink_$SRCID r.send_rtp_src_$SRCID ! udpsink host=$SERVER port=$PORT'
приемник 1 (которыйвоспроизводит данные из порта 5200): SRCID=1 PT=26 PORT=5200 CAPS_V="media=video,clock-rate=90000,encoding-name=JPEG,payload=$PT" bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" udpsrc port=$PORT ! "application/x-rtp,$CAPS_V" ! r.recv_rtp_sink_$SRCID r.recv_rtp_src_${SRCID}_${SRCID}_$PT ! rtpjpegdepay ! decodebin ! autovideosink'
приемник 2 (который воспроизводит данные из порта 5201): SRCID=1 PT=26 PORT=5201 CAPS_V="media=video,clock-rate=90000,encoding-name=JPEG,payload=$PT" bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" udpsrc port=$PORT ! "application/x-rtp,$CAPS_V" ! r.recv_rtp_sink_$SRCID r.recv_rtp_src_${SRCID}_${SRCID}_$PT ! rtpjpegdepay ! decodebin ! autovideosink'
подход 2) Теперь второй способ заключается в изменении типа полезной нагрузки и ssrc.Но это не кажется хорошим подходом, а также не правильным подходом.Потому что у нас нет типа полезной нагрузки N
производитель1 : SRCID= 1 PT=$((SRCID+100)) SERVER=127.0.0.1 PORT=5200 bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" filesrc location="video1.mp4" ! decodebin ! jpegenc ! rtpjpegpay ! "application/x-rtp,payload=$PT,clock-rate=90000,ssrc=(uint)$SRCID" ! r.send_rtp_sink_$SRCID r.send_rtp_src_$SRCID ! udpsink host=$SERVER port=$PORT'
производитель2 : SRCID= 2 PT=$((SRCID+100)) SERVER=127.0.0.1 PORT=5200 bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" filesrc location="video2.mp4" ! decodebin ! jpegenc ! rtpjpegpay ! "application/x-rtp,payload=$PT,clock-rate=90000,ssrc=(uint)$SRCID" ! r.send_rtp_sink_$SRCID r.send_rtp_src_$SRCID ! udpsink host=$SERVER port=$PORT
, но в этомслучай, с файлами mp4 я могу играть только по одному за раз.Но когда я попробовал с 2 веб-камеры с 2 разных машин, он играл одновременно.
Таким образом, используется приемник
receiver1 (который воспроизводит srcid 1): SRCID=
1 PT=$((SRCID+100)) PORT=5200 CAPS_V="media=(string)video,clock-rate=(int)90000,encoding-name=(string)JPEG,payload=$PT" bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" udpsrc port=$PORT ! "application/x-rtp,$CAPS_V" ! r.recv_rtp_sink_$SRCID r.recv_rtp_src_${SRCID}_${SRCID}_$PT ! rtpjpegdepay ! decodebin ! autovideosink'
иизмените SRCID на 2, чтобы воспроизвести второе видео.
приемник2 (который воспроизводит srcid 2): SRCID=
2 PT=$((SRCID+100)) PORT=5200 CAPS_V="media=(string)video,clock-rate=(int)90000,encoding-name=(string)JPEG,payload=$PT" bash -c 'gst-launch-1.0 -e rtpbin name=r sdes="application/x-rtp-source-sdes" udpsrc port=$PORT ! "application/x-rtp,$CAPS_V" ! r.recv_rtp_sink_$SRCID r.recv_rtp_src_${SRCID}_${SRCID}_$PT ! rtpjpegdepay ! decodebin ! autovideosink'