Github
https://github.com/HaHaHaHaHaGe/Multi-person-chat
由于是使用opus作为基本进行修改的,所以工程有些杂乱,而且没有清理,体积过大(没压缩之前是4GB)
sln文件在\master_dll\win32\VS2015\opus.sln
编译好的文件在\master_dll\win32\VS2015\x64\Release\Multi-person-chat.dll
简介
这是一个局域网多人聊天的动态链接库,只能运行在windows x64平台上
发送:使用windows自带的函数获取麦克风原始音频流---->经过opus进行语音编码----->简单的加上编号为了接收端的分包----->使用jrtp进行发送数据
接收:使用jrtp接收数据------->解包查看编号,区分是哪个人发来的语音信息------->使用opus进行语音解码-------->根据编号在对应的windows播放线程中播放语音数据
函数说明
extern "C" __declspec(dllexport) void deinitial_muti_chat();
extern "C" __declspec(dllexport) void initial_muti_chat(char* ip, int port, int id);
extern "C" __declspec(dllexport) void set_chater_vol(int id, int vol);
extern "C" __declspec(dllexport) int get_chaters_info(int *id,bool *isOffline,int *Offline_time_ms,int *realtime_am,int *volume);
deinitial_muti_chat 释放所有资源(但是根据测试发现有些对象释放失败(HWAVEOUT HWAVEIN相关))
initial_muti_chat初始化参数:
ip 对方的ip地址(局域网可以用广播形式的如:192.168.0.255)
port 启用的端口(只有大家的端口相同才可以相互通话)
id 唯一的区别 (一定要确保一个局域网内,大家的id不相同)
set_chater_vol设定一个人的说话音量:
id 更改谁的音量
vol 音量大小0-100
get_chaters_info获取所有成员信息:
id 唯一的编号
isoffline 此人是否下线
Offline_time_ms 下线时间
realtime_am 这个人说话的音频幅值
volume 这个人的说话音量
注意!!
由于设备数量有限,只测试过3台设备相互通讯,大于3台设备的通讯质量无法保证
额外
这个dll是为了做ue4多人局域网语音通话而出现的
所以下一篇就是一个ue4局域网语音通信的小demo