写在前面:
录音功能并不像是音频播放那样原本就有音频源,他是由纯脚本构成
1.页面组成
简单的UI制作界面如下图
2.录音音频
直接创建一个AudioSource,但是不给他挂在音频文件
3.创建一个c#脚本,脚本内容如下
using UnityEngine;
public class TestAudio : MonoBehaviour
{
AudioSource aud;/// <summary>
///保存录音文件
/// </summary>
// Start is called before the first frame update
void Start()
{
foreach(string device in Microphone.devices)
{
Debug.Log("Name:" + device);
}
}
// Update is called once per frame
void Update()
{
}
public void ButtonOnClick(int index)
{
if(index == 0)
{
aud = this.GetComponent<AudioSource>(); //如果传入的录音参数为0
aud.clip = Microphone.Start(Microphone.devices[0], true, 10, 44100);//开始录音
//参数代表的含义分别为1.目标设备的名称,是否循环录制,录制时间长短,录音品质需要注意的是
//无损音质的采样率=44100,即每秒音频用44100个float数据表示,但语音8000就够了(通常的移动电话=8000)。
}
else if(index == 1)//如果传入的录音参数为1说明现在已经录音一段
{
Microphone.End(Microphone.devices[0]);
}
else if(index == 2)
{
aud = this.GetComponent<AudioSource>();
aud.Play();
int min = 40000;
int max = 44100;
Debug.Log("播放状态" + IsRecording(Microphone.devices[0]));//输出当前的播放状态
Debug.Log("播放位置" + GetPosition(Microphone.devices[0]));//输出当前录音的位置
}
}
public bool IsRecording(string deviceName)
{
return IsRecording(deviceName);
}
public int GetPosition(string deviceName)
{
return GetPosition(deviceName);
}
}
将脚本挂在到AudioSource上,为Button绑定上监听事件,发布到手机上,即可使用录音功能。