2013-09-27 96 views
1

動態大小我使用unity3d使用記錄從麥克風輸入信息:麥克風輸入

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

的問題是,這個紀錄的20秒,一個標準的時間,我不想要的。我想通過記錄,直到一個完成一個記錄:

Microphone.End(deviceName); 

所得片段都應該有我記錄的確切大小,而不是一個標準的20秒。現在,如果我在3秒後結束錄音,則產生的音頻長度爲20秒。我希望它有3秒。

這怎麼辦?

回答

1

大小是不可更改的,它是固定的大小..但我確實設法將音頻修剪到實際大小。

UPDATE

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的秒的長度最初保持麥克風的音頻剪輯。