2011-10-31 59 views
3

我已經通過流媒體和使用mattgallagher AudioStreamer庫它不會顯示真實的播放時間,並在0秒永不停止播放播放音樂一個iOS應用程序...AudioStreamer沒有顯示正確的播放時間

有誰知道爲什麼會發生這種情況?

非常感謝!

回答

5

我經歷過類似的事情。在AudioStreamer.m

- (double)progress 
{ 
    @synchronized(self) 
    { 
     if (sampleRate > 0) && ![self isFinishing]) 
     { 
      if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING) 
      { 
       return lastProgress; 
      } 
    ... 
     } 
    } 

    return lastProgress; 
} 

看看進度法現在,對於不能正確顯示的進度的原因在於兩個if語句中。當你的AudioStreamer差不多完成了(可能是所有的數據都被加載的時候),它的isFinishing就變成了true,這就使得它返回緩存的值來取得進展。此外,流轉狀態變爲AS_STOPPING,這使得第二個if語句返回lastProgress。你真正想要的是更新進度直到流光停止。

我對代碼的下列修改是這樣做的,它似乎工作正常。不過,鑑於AudioStreamer的總體質量以及它由Matt Gallagher開發的事實,這些if語句可能是因爲它們是有原因的。到目前爲止,我沒有遇到任何崩潰或類似的修改後的代碼,但您應該在應用程序中徹底測試它。請注意,一旦拖纜完成,我不再查詢進度。如果你這樣做,測試,如果工程:)

- (double)progress 
{ 
    @synchronized(self) 
    { 
     if (sampleRate > 0)) 
     { 
      if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING && state != AS_STOPPING) 
      { 
       return lastProgress; 
      } 
    ... 
     } 
    } 

    return lastProgress; 
} 
+0

你好,謝謝你......我測試這個解決方案,它的工作原理以及比後...但如果我尋找音樂到另一個時間問題再次發生.. – Jovem

+0

哦,所以你有一個滑塊來改變歌曲的位置?那麼,是的,我沒有在我的應用程序中:/ – Phlibbo

+0

是的...非常感謝您的幫助解決方案提高了我的應用程序! – Jovem