![](/img/trans.png)
[英]Android : manually streaming audio effeciently using AudioTrack and Socket
[英]Using Android PresetReverb on AudioTrack
我無法在我的 Android 應用程序的音軌上啟用混響。 有人真的知道這是如何工作的嗎? 我一直在尋找所有地方,但文檔非常糟糕,並且在多個點上自相矛盾。 我看過有關此的舊帖子,但沒有一個包含任何實際答案。 到目前為止,我唯一知道的是,不推薦使用 session ID 0 實例化效果,然后將其應用於音軌(好吧,根據AudioEffect docs ,但不是PresetReverb docs )。 這是我的代碼:
PresetReverb reverb = new PresetReverb(1, audioTrack.getAudioSessionId());
reverb.setPreset(PresetReverb.PRESET_LARGEHALL);
reverb.setEnabled(true);
audioTrack.setAuxEffectSendLevel(1.0f);
為什么它不應用任何混響?
setEnabled(true)
中記錄的 output 為 0, 據說是 success 。
使用 audiosession 0 創建效果的棄用專門針對插入效果。 PresetReverb
是一種輔助效果,它的文檔是這樣說的:
由於 PresetReverb 是一種輔助效果,因此建議在音頻 session 0 上對其進行實例化,並將其附加到 MediaPLayer 輔助 output。
在您的情況下,您有一個AudioTrack
而不是一個MediaPlayer
,但它是一回事。 所以在我看來你應該做這樣的事情:
PresetReverb reverb = new PresetReverb(1, 0);
reverb.setPreset(PresetReverb.PRESET_LARGEHALL);
reverb.setEnabled(true);
audioTrack.attachAuxEffect(reverb.getId());
audioTrack.setAuxEffectSendLevel(1.0f);
(我不確定這些調用的正確順序,因為我自己沒有測試過)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.