首页 > 解决方案 > 如何在 C# 中将 Opus 编解码器转码为 G.711 编解码器

问题描述

我目前正在使用 Mumble VoIP 1.2.X 服务器-客户端通信协议。我的工作是创建一个桌面客户端,客户端与服务器连接并接收其他客户端的音频流。我在 opus 编解码器中接收流。我可以对其进行解码,也可以使用 NAudio 库进行播放。现在我需要将 opus 编解码器流转码为 G.711 ulaw 编解码器。这样,我可以使用 UDP 在多播广播频道中播放转码流。

标签: c#udpopusmu-lawg.711

解决方案


使用 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

推荐阅读