cocos creator麻将教程系列(八)—— 达达麻将语音聊天源码分析

达达麻将语音聊天源码分析

达达麻将版图

cocos creator麻将教程系列(八)—— 达达麻将语音聊天源码分析

 

语音聊天

1:语音聊天只支持Native平台,iOS与android;

2: 语音聊天的音频格式为amr;

3: native平台实现了语音的录制和播放,可以移植到其他项目使用,代码放在native文件夹下;

 

录制流程

1:按钮在代码里面监听START与Ended事件开始和结束录音;  Voice.js

2: VoiceMgr.js: 封装了android/IOS native平台的调用;

3: cc.vv.voiceMgr.prepare("record.amr");开始录制;      

1>暂停所有的游戏音效与音乐;      

2>清理掉原来录制的文件;      

3>调用native 平台的开始录制函数;

4:Ended事件响应:      

1>判断录音是否超过10S,没有超过取消;      

2>cc.vv.voiceMgr.cancel() --> 调用到native平台 cancel;      

3>cc.vv.voiceMgr.realease() --> 调用native平台,录制完成;      

4>getVoiceData: 将录制好的二进制文件转换成文本编码;      

5>发送音频文本数据给游戏服务器: voice_msg事件;

 

 

播放流程

1:服务器收到 voice_msg事件;

2: 将语音数据在房间广播:voice_msg_push事件;

3: GameNetMgr.js-->收到voice_msg_push事件,然后派发voice_msg;

4: MJRoom.js-->playVoice;

5: cc.vv.voiceMgr.writeVoice(msgfile,msgInfo.msg); 将受到的数据写入声音文件;

6: 播放声音文件cc.vv.voiceMgr.play(msgfile),调用本地接口;

7: update函数里面检车播放时间是否到,调用onPlayerOver到了以后继续恢复原来的游戏音效;

8:优点: native平台下的录音和播放代码是直接可以使用的;

有带改进的地方:音频数据比较大,建议不要走游戏的长连接,阻塞游戏数据通道(广播),可以改成独立的http上传和下载,然后房间里面只广播xxxx说了话;