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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Unity中获取到面板上的Rotation值
下一篇:语言中的溢出

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月24日 08时49分11秒