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

本文主要是介绍【Unity实战100例】Unity调取移动端的麦克风进行录音并播放传输字节,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


源工程地址:https://download.csdn.net/download/qq_37310110/11869058

1.对MicroPhone类的理解

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

2.获取麦克风设备

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

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);//传输给服务器//GameManager.GetInstance.tcpClient.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 (trigger.triggers.Count == 0){trigger.triggers = new List<EventTrigger.Entry>();}UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);EventTrigger.Entry entry = new EventTrigger.Entry();entry.eventID = eventID;entry.callback.AddListener(callback);trigger.triggers.Add(entry);}

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

3.运行结果

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

这篇关于【Unity实战100例】Unity调取移动端的麦克风进行录音并播放传输字节的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478696

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装