2013-10-21 29 views
5

我使用AVPlayer播放長音頻mp3流音樂(8分鐘),短音樂(1到3分鐘)播放完美,但與這些更大的音樂音樂開始播放,但播放後隨機分鐘(2和3:20之間),玩家從頭開始重新開始軌道。儘管播放器重新啓動音樂,但狀態信息(持續時間和當前時間)保持正常計數,無需重新啓動,只需重新啓動音頻。有人有一個想法?AVPlayer沒有完成流軌道

文件我玩的是:http://storage-new.newjamendo.com/download/track/57864/mp31/

播放器代碼:

AVAudioSession *mySession = [AVAudioSession sharedInstance]; 

// Assign the Playback category to the audio session. 
NSError *audioSessionError = nil; 
[mySession setCategory: AVAudioSessionCategoryPlayback 
       error: &audioSessionError]; 

if (audioSessionError != nil) { 

    NSLog (@"Error setting audio session category."); 
    return; 
} 

// Activate the audio session 
[mySession setActive: YES 
       error: &audioSessionError]; 

if (audioSessionError != nil) { 

    NSLog (@"Error activating audio session during initial setup."); 
    return; 
} 

player = [AVPlayer playerWithURL:[NSURL URLWithString:url]]; 


[player play]; 

這裏是我如何跟蹤有關當前時間的信息,也一直正常清點。

AVPlayerItem *item = player.currentItem; 

CMTime duration = [item duration]; 
CMTime currentTime = [item currentTime]; 
+0

它可能與您的音樂來源有關,我使用AVplayer來播放soundcloud音樂,我沒有任何問題 –

+0

@NicolasManzini我已經嘗試過與其他自定義播放器在互聯網上(github)使用相同的音樂來源,它不會發生,只是與AVPlayer。 –

回答

1

看來問題是MP3文件,我流是MPEG-1和蘋果的文件說,我必須使用MPEG-2,所以我剛剛改爲正確的版本,以及錯誤不再發生。

+1

我有同樣的問題,我想知道如果它是編碼(如果我在iTunes中看MP3,他們正在使用mpeg-1)。你能告訴我你用mpeg-2對MP3進行編碼的軟件嗎? –

+0

是的@RecycledSteel,這使得我的問題不再頻繁,但有時候我意識到仍然在發生。所以我刪除了這個問題的「解決」..它仍然在發生..我相信這是緩存的問題,因爲它不會發生在小歌曲中..我在github上找到了一些沒有這個問題的玩家,但是不幸的是我的項目對這個玩家來說太大了,我不得不改變太多的東西。我希望我能找到解決辦法,如果你願意,請告訴我。 –

+0

這對我來說也是一個非常大的重寫。我發現,當我將流式傳輸到Safari設備(不是MAC或PC)時,問題也會發生。我的音樂以獨特的方式流傳,因此我將研究這一點,只是將測試過的流式傳輸到Galaxy上,並且工作正常。 –

-1

我已經設法解決這個問題,它會出現(對我來說)服務器發送文件作爲一個塊。

我不知道流入和流出,但流現在被提供爲一個「範圍」流(它提供了我告訴段)。這不僅解決了這個問題,而且下面這些東西開始爲我工作(就像提供NaN一樣)。

float duration = CMTimeGetSeconds(self.avQueuePlayer.currentItem.duration); 

我希望這可以幫助,我沒有被告知太多關於服務器上發生了什麼變化。勉強我的URL鏈接幾乎所有其他設備的工作,但我從我的應用程序和Safari瀏覽器時,我得到了這個問題。

+0

我不明白,你究竟做了什麼?你的代碼中有什麼改變?你如何使用它? –

+0

我真的需要一個解決方案,你能描述一下你的播放器代碼中發生了什麼變化嗎? –

+0

問題在於如何從服務器提供流而不是在代碼中。讓我把你的URL插入我的代碼中,看看會發生什麼。 –