Как перекодировать кодек Opus в кодек G.711 на C#
В настоящее время я работаю с протоколом связи сервер-клиент Mumble VoIP 1.2.X. Моя работа заключается в создании настольного клиента, в котором клиент подключен к серверу и принимает аудиопотоки других клиентов. Я получаю поток в кодеке opus. Я могу его декодировать, а также могу играть с помощью библиотеки NAudio. Теперь мне нужно перекодировать поток кодека opus в кодек ulaw G.711. Так что я могу воспроизвести транскодированный поток в многоадресном радиоканале с использованием UDP.
1 ответ
Используя C#, вы можете запустить ffmpeg.exe, который позволит вам:
- Возьмите поток Opus как вход
- Перекодируйте его в G.711u
- Перенаправьте его на радио с помощью UDP
Вот пример, который выполняет последние два шага:
//listen to the microphone, transcode to G.711u, send it over UDP to a multicast listener
ffmpeg -f dshow -i audio="Microphone (Logitech USB Headset H340)" -ac 1 -ar 8000 -ab 64 -acodec pcm_mulaw -f rtp rtp://239.0.0.1:5656
А вот еще несколько примеров, которые могут пригодиться:
//list input devices
ffmpeg -list_devices true -f dshow -i dummy
//record microphone to mp3
ffmpeg -f dshow -i audio="Microphone (Logitech USB Headset H340)" -c:a libmp3lame -ar 44100 -b:a 320k -ac 1 output1.mp3
//play audio going to the radio
ffplay rtp://239.0.0.1:5656
//play audio coming from the radio
ffplay rtp://239.0.0.2:5656
//receive rtp multicast g.711 and save to mp3
ffmpeg -i rtp://239.0.0.1:5656 -filter:a "asetrate=8000" -acodec libmp3lame -ar 44100 output2.mp3