2013-07-12 228 views
2

我正在實現基本音頻播放器以播放遠程音頻文件。文件格式爲mp3。 我寫的代碼在模擬器上工作正常,但不適用於真實設備。然而,我在我的應用程序中使用的相同的url工作正常,如果我使用safari加載它(在相同的真實設備上),所以我沒有真正得到缺失的一點。 以下是我的代碼:AVPlayer在模擬器上播放,但不在真實設備上

self.musicPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:urlTrack]]; 
[self.musicPlayer play]; 

東西非常容易。音樂播放器屬性被定義爲

@property (nonatomic, retain) AVPlayer *musicPlayer; 

我也試過使用AVPlayerItem,但結果是一樣的。這裏是代碼我用

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:urlTrack]]; 
self.musicPlayer = [AVPlayer playerWithPlayerItem:playerItem]; 
[self.musicPlayer play]; 

最後我嘗試使用下面

self.musicPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:urlTrack]]; 
NSLog(@"Player created:%d",self.musicPlayer.status); 
[self.musicPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; 


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    NSLog(@"Player created:%d",self.musicPlayer.status); 

    if (object == self.musicPlayer && [keyPath isEqualToString:@"status"]) { 
     if (self.musicPlayer.status == AVPlayerStatusReadyToPlay) { 
      [self.musicPlayer play]; 
     } else if (self.musicPlayer.status == AVPlayerStatusFailed) { 
      // something went wrong 
     } 
    } 
} 

代碼當方法observeValueForKeyPath調用播放器狀態1和該劇exectuted但仍然不健全。 我試了幾個文件,如:

http://www.nimh.nih.gov/audio/neurogenesis.mp3

http://www.robtowns.com/music/blind_willie.mp3

任何想法? Tnx

回答

14

檢查文件名的拼寫。該設備是區分大小寫,模擬器不是...

此外,檢查您的鈴聲是否關閉,你不會聽到任何聲音,當它關閉。爲了防止這種情況,使用

NSError *_error = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &_error]; 

,你初始化玩家

+0

我試着按你的建議,我的球員init和沒有問題之前添加以下兩行之前。現在,我嘗試使用我的個人iPhone和不同於iPad和我面臨此問題的網絡的網絡。至少我可以說代碼工作正常。我將在iPad上進行同樣的測試。但我不明白爲什麼,當我在iPad上試用這個相同的代碼時,我用它進行開發,它不起作用,但是同樣的mp3網址試圖在Safari上運行(總是在iPad上)。 –

+0

我想我找到了它 - 你沒有分配你的播放器,所以它馬上被釋放。試試'self.musicPlayer = [[AVPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:urlTrack]];' - 另外,在[[self]之前加上'[self.musicPlayer prepareToPlay]'。 musicPlayer play]' – Swissdude

+0

這個問題可以通過我發佈的代碼來解決。通過添加它,它工作正常。 Tnx :) –

相關問題