Unity中实现获取一段时间内移动设备声音的最大音量
发布日期:2021-06-30 19:59:18
浏览次数:4
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月15日 12时20分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
大厂经典面试题:Redis为什么这么快?
2019-04-30
精通Spring?请吃我一狗腿!
2019-04-30
培训班老师说可以用这个干掉一大批面试者
2019-04-30
阿里四面,居然栽在一道排序算法上
2019-04-30
【Java编码规范】《阿里巴巴Java开发手册(正式版)》发布!
2019-04-30
如何在二三线城市月薪过万(一)看完这篇后端简历优化,包你面试不断
2019-04-30
阿里P8大神教你十分钟构建好SpringBoot + SSM框架 成功晋升
2019-04-30
Linux运维-搭建高可用Redis缓存
2019-04-30
膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了
2019-04-30
Linux 常用命令
2019-04-30
Android之Handler机制篇
2019-04-30
Android之网络协议篇
2019-04-30
Android之RecyclerView篇
2019-04-30
Android之Retrofit基本用法篇
2019-04-30
Netty与网络协议资料整理
2019-04-30
Golang相关资源整理
2019-04-30
设置Golang的开发环境
2019-04-30