Как перекодировать кодек Opus в кодек G.711 на C#

В настоящее время я работаю с протоколом связи сервер-клиент Mumble VoIP 1.2.X. Моя работа заключается в создании настольного клиента, в котором клиент подключен к серверу и принимает аудиопотоки других клиентов. Я получаю поток в кодеке opus. Я могу его декодировать, а также могу играть с помощью библиотеки NAudio. Теперь мне нужно перекодировать поток кодека opus в кодек ulaw G.711. Так что я могу воспроизвести транскодированный поток в многоадресном радиоканале с использованием UDP.

1 ответ

Используя C#, вы можете запустить ffmpeg.exe, который позволит вам:

  1. Возьмите поток Opus как вход
  2. Перекодируйте его в G.711u
  3. Перенаправьте его на радио с помощью 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
Другие вопросы по тегам