c# - 如何在 C# 中将 Opus 编解码器转码为 G.711 编解码器
问题描述
我目前正在使用 Mumble VoIP 1.2.X 服务器-客户端通信协议。我的工作是创建一个桌面客户端,客户端与服务器连接并接收其他客户端的音频流。我在 opus 编解码器中接收流。我可以对其进行解码,也可以使用 NAudio 库进行播放。现在我需要将 opus 编解码器流转码为 G.711 ulaw 编解码器。这样,我可以使用 UDP 在多播广播频道中播放转码流。
解决方案
使用 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
推荐阅读
- node.js - 节点 js 生成过程挂起
- php - 在 Web 应用程序的有效页面之间获取带参数的路径?
- angular - 使用 Angular HttpClient 过滤结果
- html - 是否可以在父元素的 onclick 处理程序之前有一个触发器?
- google-cloud-platform - 如何从共享 CPU 实例禁用 Google Cloud Plat 上的突发?
- python - 如何输出我的数据集的地图?
- python - 在 Pandas 中绘图不会显示所有数据
- selenium-webdriver - 尝试从 excel 中获取数据时出现数据提供程序不匹配错误
- vba - 根据关键字查找要复制的特定范围
- docker - 在 docker 上安装特定版本的弹性搜索