[問題] 音樂播放的延遲

看板AndroidDev作者 ( U U)時間12年前 (2012/04/12 23:36), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
我想做一個類似節奏天國/太鼓達人之類的遊戲 目前遊戲中的各種零碎「音效」,用SoundPool來播放,即時性是滿足夠的 問題在於「背景音樂」的部分 用MediaPlayer來播放會有一定程度的delay 而且每次進入遊戲的delay,有時長有時短 所以一旦delay較長的時候,會導致「背景音樂」與「音效」些微錯開 感覺delay的範圍大概是0~300ms之間 因為遊戲是以節奏為主,滿注重timing的 所以大概50ms以上的誤差就不太能夠接受了 除了MediaPlayer之外,有嘗試過用SounPool來播放背景音樂 我看有人說SoundPool的單檔容量不能超過1MB 但實際測試則發現無法超過約100KB,mp3/ogg都試過了 然而一場遊戲大約2分鐘,把音樂壓縮到100KB實在有點慘... 另外也嘗試過OpenSL的方式 我是借用這個專案的code來用 http://code.google.com/p/opensl-soundpool/ 雖然delay的問題大幅減少 幾乎每場遊戲的delay都極短 (雖然偶爾還是會不理想...不過算可接受) 但是這個專案的code似乎只能使用wav檔,而且要44.1K的 所以每次進入遊戲的讀取時間從原本大約0秒,變成8~10秒....= = 所以想請問大家不知道有沒有什麼建議呢? AudioTrack好像是一個方向 不過似乎有很多的細節需要處理,有點超出我的能力範圍... (我只是個Java & Android入門者) OpenSL如果能修改成播放mp3/ogg那就很完美,不過若是自己來也是滿有難度的感覺 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.144.143 ※ 編輯: milonga332 來自: 61.217.144.143 (04/12 23:36)

04/13 02:04, , 1F
不確定 但您使用MediaPlayer是先prepared 進入再start?
04/13 02:04, 1F
是的,有事先prepare過了,delay是純粹來自.start()這個指令

04/13 02:16, , 2F
要不要玩玩jetplayer
04/13 02:16, 2F
那我試試看jetplayer好了,謝啦! ※ 編輯: milonga332 來自: 61.217.144.143 (04/14 01:40)
文章代碼(AID): #1FXlPzwc (AndroidDev)