我開始研究VOIP計劃以瞭解VOIP的一些基本知識。我主要工作,但我在將系統轉換爲使用WaveMixerStream32後遇到了問題。轉換爲在WaveMixerStream32中使用的BufferedWaveProvider可降低音頻音調
我的程序使用16位波形格式讀取來自WaveIn的輸入,用Speex編解碼器對其進行壓縮,然後通過網絡將它發送到客戶端。起初,我一直在錯誤地使用BufferedWaveProvider,這使我使用WaveMixerStream32進行了研究。但是,爲了使用它,我需要將BufferedWaveProvider轉換爲WaveStream32,然後才能在WaveMixerStream32中使用。
我使用的轉換代碼是:
provider = new BufferedWaveProvider(format) { DiscardOnBufferOverflow = true };
wave16ToFloat = new Wave16ToFloatProvider(provider); // I have tried with and without this converter.
wpws = new WaveProviderToWaveStream(wave16ToFloat);
channel = new WaveChannel32(wpws);
我得到了IWaveProvider到的WaveStream轉換器從This Question。
我那麼最終流添加到WaveMixerStream32這樣的:
waveMixer.AddInputStream(channel);
雖然它比我原來的好很多,在球場上最後的聲音比輸入顯著更深。
我在做什麼錯誤/我該如何解決它?
如果它聽起來像「盧克,我是你的父親」,那麼你就錯了。樣本量中有一個因子2。 –
我發現它與採樣率相關,並改爲48kHz,結果發現我聽起來像剛剛吸入大量氦氣。我只是在開始時改變了採樣率,因爲我使用的編解碼器Speex的最大采樣率設置爲32kHz。然而,最終的採樣率竟然是44.1kHz。 – Zachar543
這聽起來像你有一個比你接受的更好的答案。請不要害羞。 –