簡體   English   中英

在 AudioTrack 上使用 Android PresetReverb

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM