микширование нескольких аудиопотоков rtp с помощью gstreamer - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь смешать несколько аудио-пакетов udp rtp, которые были созданы с помощью следующей команды на некоторых других компьютерах, но после большого поиска я не смог найти какую-то правильную команду для смешивания полученных aud ios.

Я использую эту команду для потоковой передачи звука с других компьютеров на мой компьютер:

gst-launch-1.0 autoaudiosrc ! audioconvert ! rtpL24pay ! udpsink host=<MY_COMPUTER_IP> port=<some_port_number>

, и я могу получить поток на моем компьютере с помощью этой команды:

gst-launch-1.0 -v udpsrc port=<port_number> caps="application/x-rtp,channels=(int)2,format=(string)S16LE,media=(string)audio,payload=(int)96,clock-rate=(int)44100,encoding-name=(string)L24" ! rtpL24depay ! audioconvert ! autoaudiosink sync=false

, но я хочу смешать принимаемые потоки вместе и воспроизводить их как один звук только в одном конвейере, как я могу это сделать?

1 Ответ

1 голос
/ 23 января 2020

Для микширования двух аудиопотоков вы можете использовать плагин GStreamer audiomixer . Очень базовый c пример:

Генератор 2 параллельных RTP (по UDP) потоков с тестом aud ios на разных частотах

gst-launch-1.0 audiotestsrc freq=523 ! audioconvert ! rtpL24pay ! udpsink host=127.0.0.1 port=5000 \
audiotestsrc freq=659 ! audioconvert ! rtpL24pay ! udpsink host=127.0.0.1 port=5001

Приемник 2 разных потоков RTP (по UDP), который смешивает 2 ауд. ios, переносимых потоками

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp,channels=(int)2,format=(string)S16LE,media=(string)audio,payload=(int)96,clock-rate=(int)44100,encoding-name=(string)L24" \
! queue ! rtpL24depay ! audioconvert ! audiomixer name=mixer ! autoaudiosink \
udpsrc port=5001 caps="application/x-rtp,channels=(int)2,format=(string)S16LE,media=(string)audio,payload=(int)96,clock-rate=(int)44100,encoding-name=(string)L24" \
! queue ! rtpL24depay ! audioconvert ! mixer.
...