You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Mumblesharp实现语音通话的代码示例

使用Mumblesharp实现语音通话的核心代码片段

前提准备

确保已通过NuGet安装Mumblesharp和NAudio(Mumblesharp仅处理Mumble协议交互,音频设备IO依赖NAudio实现)。


1. 基础服务器连接与登录

using Mumblesharp;
using Mumblesharp.Models;
using System.Security.Cryptography.X509Certificates;

var client = new MumbleClient();

// 配置本地Mumble服务器参数
client.Host = "localhost";
client.Port = 64738; // Mumble默认端口
client.Username = "YourClientUsername";
// 若服务器启用证书验证,可加载本地证书(可选)
client.Certificate = new X509Certificate2("path/to/cert.pfx", "certPassword");

// 连接状态监听
client.Connected += (_, __) => Console.WriteLine("已连接到Mumble服务器");
client.Authenticated += (_, __) => Console.WriteLine("身份验证通过,进入频道");
client.Disconnected += (_, __) => Console.WriteLine("与服务器断开连接");

// 启动连接
await client.ConnectAsync();

2. 麦克风音频捕获与发送

using NAudio.Wave;

// 初始化麦克风捕获,匹配Mumble默认音频格式:48kHz、16位、单声道
var waveIn = new WaveInEvent();
waveIn.WaveFormat = new WaveFormat(48000, 16, 1);

waveIn.DataAvailable += async (_, e) =>
{
    // 仅在已认证状态下发送语音
    if (client.IsAuthenticated)
    {
        await client.SendVoiceAsync(e.Buffer, e.BytesRecorded);
    }
};

// 开始捕获麦克风输入
waveIn.StartRecording();

3. 语音接收与扬声器播放

using NAudio.Wave;

// 初始化音频播放器,匹配Mumble音频格式
var waveOut = new WaveOutEvent();
var bufferProvider = new BufferedWaveProvider(new WaveFormat(48000, 16, 1));
waveOut.Init(bufferProvider);
waveOut.Play();

// 监听语音接收事件,解码后播放
client.VoiceReceived += (_, e) =>
{
    bufferProvider.AddSamples(e.PcmData, 0, e.PcmData.Length);
};

关键注意事项

  • 服务器配置检查:确保本地Mumble服务器(murmur)未禁用语音传输功能。
  • 音频格式强制匹配:必须使用48kHz、16位、单声道的PCM格式,否则会出现语音失真或无法播放。
  • 资源释放:程序退出时需调用waveIn.StopRecording()、waveOut.Stop()、client.DisconnectAsync()释放占用的音频设备和网络连接。

内容的提问来源于stack exchange,提问作者segzwealth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:32:09