Я написал два приложения командной строки на C ++, которые используют WebRTC:
- Клиент создает PeerConnection и открывает AudioStream
- Сервер получает и воспроизводит AudioStream
Базовая реализация работает: они обмениваются SDP-Offer и -Answer, находят свои внешние IP-адреса с помощью ICE, создаются PeerConnection и PeerConnectionFactory с соответствующими ограничениями и т. Д. Я добавил ловушку на стороне сервера для RtpReceiverImpl::IncomingRtpPacket
который записывает полученные данные в файл.Файл содержит действительный звук PCM.Поэтому я предполагаю, что клиент успешно передает данные через сеть на серверное приложение.
На стороне сервера мой обратный вызов PeerConnectionObserver::OnAddStream
вызывается и получает MediaStreamInterface
.Кроме того, я могу перебирать свои DeviceManagerInterface::GetAudioOutputDevices
через мои аудиоустройства.В общем, все в порядке.
Чего не хватает: мне нужен какой-то клей, чтобы сказать WebRTC, чтобы проигрывать мой AudioStream на соответствующем устройстве.Я видел, что могу получить объекты AudioSink, AudioRenderer и AudioTrack.Опять же: к сожалению, я не вижу интерфейса для передачи их на аудиоустройство.Может ли кто-нибудь помочь мне с этим?
Одно важное замечание: я хочу избежать отладки реального оборудования.Поэтому я добавил -DWEBRTC_DUMMY_FILE_DEVICES при сборке моих модулей WebRTC.Он должен записывать аудио в выходной файл, но файл содержит только 0x00.Входной файл успешно прочитан, потому что, как я упоминал ранее, аудио передается по протоколу RTP.