Unity中实现获取一段时间内移动设备声音的最大音量
发布日期:2021-06-30 19:59:18
浏览次数:5
分类:技术文章
本文共 1284 字,大约阅读时间需要 4 分钟。
主要就是得到音量的这个方法:原理就是将一段时间内的声音分成若干份,然后遍历每一小份的音量,返回这一段时间内声音的最大值。
——————————————完整代码
using UnityEngine;public class MicrophoneManager : MonoBehaviour{ private const int VOLUME_DATA_LENGTH = 128;//录制的声音长度 private const int frequency = 44100;//码率 private const int lengthSec = 999;//录制时长 private string mDeviceName;//设备名称 private AudioClip clip;//录制的音频 public float volume;//音量 private void Start() { //获取设备名称 mDeviceName = Microphone.devices[0]; //录制一段音频 clip = Microphone.Start(mDeviceName, true, lengthSec, frequency); } private void Update() { volume = GetMaxVolume(); } //获取音量 private float GetMaxVolume() { float maxVolume = 0f; //用于储存一段时间内的音频信息 float[] volumeData = new float[VOLUME_DATA_LENGTH]; //获取录制的音频的开头位置 int offset = Microphone.GetPosition(mDeviceName) - VOLUME_DATA_LENGTH + 1; if (offset < 0) { return 0f; } //获取数据 clip.GetData(volumeData, offset); //解析数据 for (int i = 0; i < VOLUME_DATA_LENGTH; i++) { float tempVolume = volumeData[i]; if (tempVolume > maxVolume) { maxVolume = tempVolume; } } return maxVolume; }}
转载地址:https://liuhaowen.blog.csdn.net/article/details/90203704 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月24日 08时49分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
给Oracle数据库换一个1522端口的监听
2019-04-30
Excel表格数据生成ECharts图表
2019-04-30
阿里云短信服务python版,pyinstaller打包运行时缺少文件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
Flutter 使用插件打开相册、相机
2019-04-30
libuv实现tcp代理服务器
2019-04-30
libuv使用不当导致的内存泄漏
2019-04-30
libuv实现ping包发送和接收
2019-04-30
基础架构系列篇-CENTOS7安装NGINX
2019-04-30
基础架构系列篇-系统centos7安装docker+COMPOSE
2019-04-30
基础架构系列篇-系统centos7中docker安装rabbitmq
2019-04-30
基础架构系列篇-NGINX部署VUE
2019-04-30
个人电商项目,基于uni-app+ springcloud +VUE技术
2019-04-30
基础架构系列篇-系统centos7安装kafka
2019-04-30