我使用unity3d来录制来自麦克风的输入:
getAudioSource.clip = Microphone.Start(null, true,20, 44100);
问题是这个记录的标准时间为20秒,这是我不想要的。我想录制直到完成录制:
Microphone.End(deviceName);
并且生成的剪辑应该具有我记录的确切尺寸,而不是标准的20秒。现在,如果我在3秒后结束录制,则产生的音频长度为20秒。我希望它有3秒。
如何做到这一点?
答案 0 :(得分:1)
尺寸不可更改,它是固定尺寸..但我确实设法将音频修剪为实际尺寸。
<强>更新强>
AudioClip ac = getAudioSource.clip;
float lengthL = ac.length;
float samplesL = ac.samples;
float samplesPerSec = (float)samplesL/lengthL;
float[] samples = new float[(int)(samplesPerSec * timeSinceRecordStarted)];
ac.GetData(samples,0);
getAudioSource.clip = AudioClip.Create("RecordedSound",(int)(timeSinceRecordStarted*samplesPerSec),1,44100,false,false);
getAudioSource.clip.SetData(samples,0);
其中 timeSinceRecordStarted 是记录长度(以秒为单位), getAudioSource 最初保存麦克风音频剪辑。