Как управлять передачей голоса по Wi-Fi? (GStreamer)

175
fer y

Я пытаюсь создать телефонную передачу через Wi-Fi. Я пытаюсь подключить программируемую гарнитуру Wi-Fi (она на самом деле не существует, на самом деле это компьютер с Linux) к мобильному телефону, который также является Wi-Fi. включен. (он также не существует, и это также компьютер с Linux). Это похоже на случай, когда у вас есть мобильный телефон, который связан с устройством сопряжения Bluetooth, и когда вы получаете телефонный звонок, вы можете контролировать установление и прерывание вызова с помощью самой гарнитуры. Разница в том, что я хочу использовать Wi-Fi вместо Bluetooth. Итак, что я сделал до сих пор, так это внедрил поток мультимедиа в Gstreamer, который может отправлять стереофонические голосовые сигналы по IP (т.е. VoIP в локальной беспроводной сети). Вот конвейер отправителя:

gst-launch -v alsasrc ! audioconvert ! audio/x-raw-int, channels=2,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink  host=192.168.178.110 port=5000 //sender 

На приемном конце я сделал следующее: прослушивание UDP-порта для приема голосовых сигналов, декодирования и воспроизведения:

 gst-launch udpsrc port=5000 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16,  channels=(int)2, payload=(int)96" ! rtpL16depay ! audioconvert ! alsasink //receiver 

Если я запускаю два потока вручную на каждом конце, я получаю свои стереофонические сигналы и, меняя два конвейера для запуска в отдельном Терминале на каждом компьютере Linux, я могу иметь Речь в реальном времени между двумя компьютерами Linux.

Проблема с этим заключается в том, что мне приходится вручную запускать конвейеры на каждом Linux, чтобы установить двунаправленное соединение, и, как мы все знаем при сопряжении Bluetooth, после сопряжения пользователи не должны делать никаких дополнительных шагов вручную для подключения мобильного телефона. с гарнитурой. Используется некоторый тип сигнализации, который инициализирует процесс отправки / получения на каждом конце. Это означает, что, когда мобильный телефон звонит, гарнитура получает уведомление о том, что на мобильный телефон поступает входящий вызов.

Теперь мой вопрос заключается в том, как правильно этот процесс автоматизации, когда я хочу установить вызов с одного из компьютеров Linux на другой, другой конец уведомляется, что Linux с указанными символами (например, xxx.xxx. xxx.xxx IP и номер порта xxxx) пытается подключиться, и после подтверждения на другом конце вышеупомянутые конвейеры начинают потоковую передачу аудио, двунаправленно и когда один конец завершает разговор, завершение разговора.

1

0 ответов на вопрос