unity 发送语音消息

最近在做聊天室 但是不想接入别人的sdk就自己写了个语音消息的发送

这里只讲思路 首先用 foreach (var device in Microphone.devices)  取到语音输入设备

然后用官方的Microphone.Start("", false, 10, 8000);录制语音 因为我做的包括手机 所以一般是10秒的8000采集

录出来的是AudioClip 
然后这里把录出来的文件转换成byte[] 最后转成字符串进行传输

 float[] floatData = new float[aud.clip.samples * aud.clip.channels];

        aud.clip.GetData(floatData, 0);

        byte[] outData = new byte[floatData.Length * 4];

        Buffer.BlockCopy(floatData, 0, outData, 0, outData.Length);
         string str = Convert.ToBase64String(outData );

接下来吧收到的文件解开进行播放.或者自己创建butt播放

 JsonData jsonData = JsonMapper.ToObject(date.data.ToString());

            byte[] bytes = Convert.FromBase64String(string.Format("{0}", jsonData["audio"]));
            float[] samples = new float[bytes.Length / 4];
            Buffer.BlockCopy(bytes, 0, samples, 0, bytes.Length);
            aud.clip = AudioClip.Create("playRecordClip", samples.Length, 1,8000, false);

            aud.clip.SetData(samples, 0);

            aud.Play();

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值