cocos lua 实现原声语音 流程概述

本文介绍了在cocos游戏中集成原声语音系统的过程,通过lua调用C++,C++借助JNI调用Java实现语音录制和播放。详细阐述了从lua到C++再到Java的交互流程,包括lua调用C++的步骤、C++通过JNI调用Java的方法,以及在不同平台上的代码适配。文章还提到了一些常见的错误和解决方案,如函数签名、字符串转换和编码问题。
摘要由CSDN通过智能技术生成

由于游戏需要,在cocos里面集成了自己原声的语音系统。虽然做的过程踩了很多的坑,并且过程很痛苦。这个过程需要你去了解很多的东西。 我是直接使用的lua 调用C++,c++在通过jni 调用安卓java来实现的语音录制并且播放。总体就是微信的聊天方式,语音内容都可以保存并且重复播放。下面我们就来梳理一下大概的流程。

系统流程描述:
lua通过C++调用java的recordVoice接口,java底层开始录音,客户录音完成后,lua在调用java的stopRecord接口,stopRecord将录制成功的3gp文件读取成byte流传通过C++传递给lua。lua将该byte传递给服务器,服务器转发给所有客户端。 客户端收到后将byte流传递到java层。 java通过该byte创建一个3gp文件。 以后就可以通过播放这个3gp文件来实现语音播放及保存。

1.首先要学会怎么用lua调用C++,当然如果你是C++的项目就不用考虑这个了。lua调用C++通过cocos提供的generator-binding来进行创建中介文件CPP.创建完毕在lua中注册C++函数就OK了。其实现在想起过程还是挺简单,但是落实到细节还是会有很多问题。
(1)如果报错说什么NDK的头文件丢失,那么你可以考虑一下是否应该更换自己的NDK重新运行python文件。我现在成功使用的是r10d,之前一直用r10e一直不能成功生成中介cpp文件。屎都要给你气出来。 自己最好去看下cocos generater里面有一个readme文件。他会告诉你一些需要做的提前准备。在cocos/tools/tolua目录下面。
(2)命名空间报错。 如果你自己写的文件还有命名空间的话··,这个就比较麻烦了这里送大家一个传送门。
http://www.cocoachina.com/bbs/read.php?tid=196037
如果你没有命名空间那么就挺简单的。直接:target_namespace = voiceSystem 。 你就可以在lua中使用voiceSystem这个命名空间调用这个文件的函数了。道理跟cocos lua 里面的 cc.xxx一样。
(3)在你写C++代码的时候最好写三份,windows,android,ios。 可以根据当前平台来判断运行哪一份代码。

2.那么lua调用C++的准备工作差不多了,我们现在可以来实现C++调用java。这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值