麦克风输入的动态大小

时间:2013-09-27 09:39:03

标签: unity3d

我使用unity3d来录制来自麦克风的输入:

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

问题是这个记录的标准时间为20秒,这是我不想要的。我想录制直到完成录制:

Microphone.End(deviceName);

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

如何做到这一点?

1 个答案:

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