1

我正在使用 unity3d 记录来自麦克风的一些输入,使用:

getAudioSource.clip = Microphone.Start(null, true,20, 44100); 

问题是这记录了 20 秒的标准时间段,这是我不想要的。我想通过以下方式录制直到完成录制:

Microphone.End(deviceName);

并且生成的剪辑应该具有我记录的确切大小,而不是标准的 20 秒。现在,如果我在 3 秒后结束录制,则生成的音频长度为 20 秒。我希望它有 3 秒。

如何才能做到这一点?

4

1 回答 1

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最初保存麦克风音频剪辑。

于 2013-10-02T08:40:13.747 回答