【Unity实战100例】Unity调取移动端的麦克风进行录音并播放传输字节

阅读: 评论:0

【Unity实战100例】Unity调取移动端的麦克风进行录音并播放传输字节

【Unity实战100例】Unity调取移动端的麦克风进行录音并播放传输字节


源工程地址:

1.对MicroPhone类的理解

  对麦克风的调用在Unity里主要是用到了MicroPhone这个类,此类里面有几个方法可以方便我们实现功能

2.获取麦克风设备

  devices = Microphone.devices;if (devices.Length != 0){ = "设备有麦克风:" + devices[0];} = "设备没有麦克风";}

3.开始录音

   AddTriggersListener(voiceBtn.gameObject, EventTriggerType.PointerDown, (t) =>{Debug.Log("开始说话");StartCoroutine("KeepTime");//参数一:设备名字,null为默认设备;参数二:是否循环录制;参数三:录制时间(秒);参数四:音频率aud.clip = Microphone.Start(devices[0], false, 15, 6000);});

 4.结束录音

  AddTriggersListener(voiceBtn.gameObject, EventTriggerType.PointerUp, (t) =>{Debug.Log("结束说话");StopCoroutine("KeepTime");Microphone.End(devices[0]);//直接播放aud.Play();string byteStr = AudioToByte(aud);//传输给服务器//pClient.SendMeToServer(ProtoType.T_S_Voice, byteStr);});

5. 音频字节相互转换

 //把录好的音段转化为base64的string。测试过不转base64直接用byte[]也是可以的public string AudioToByte(AudioSource audio){float[] floatData = new float[audio.clip.samples * audio.clip.channels];audio.clip.GetData(floatData, 0);byte[] outData = new byte[floatData.Length];Buffer.BlockCopy(floatData, 0, outData, 0, outData.Length);return Convert.ToBase64String(outData);}//把base64的string转化为audioSourcepublic void ByteToAudio(AudioSource audioSource, string str){byte[] bytes = Convert.FromBase64String(str);float[] samples = new float[bytes.Length];Buffer.BlockCopy(bytes, 0, samples, 0, bytes.Length);audioSource.clip = AudioClip.Create("RecordClip", samples.Length, 1, 6000, false);audioSource.clip.SetData(samples, 0);audioSource.Play();}

6.添加按钮监听类型事件

  //添加按钮监听类型private void AddTriggersListener(GameObject obj, EventTriggerType eventID, UnityAction<BaseEventData> action){EventTrigger trigger = obj.GetComponent<EventTrigger>();if (trigger == null){trigger = obj.AddComponent<EventTrigger>();}if (iggers.Count == 0){iggers = new List<EventTrigger.Entry>();}UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);EventTrigger.Entry entry = new EventTrigger.Entry();entry.eventID = eventID;entry.callback.AddListener(callback);iggers.Add(entry);}

对应的ui组件挂靠一下直接运行工程就好了

3.运行结果

具体接下来想实现什么功能就可以自己更改自定义

本文发布于:2024-02-03 06:29:48,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170691298649256.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:麦克风   字节   实战   Unity
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23