我有點失落。我有一個需要播放音頻和視頻文件或流的類。它有一個完全自定義的用戶界面,所以我使用AVPlayer。m3u8音頻流在MPMoviePlayerController播放,但不是AVPlayer播放?
有一個實況音頻流不會播放。每當AVPlayerItem觀察者觸發AVPlayerItemStatusFailed時,AVPlayer的錯誤都是零。
但是,當我嘗試在MPMoviePlayerController或Safari或Chrome中播放相同的音頻流時,它工作得很好。這是非常奇怪的,因爲內部MPMoviePlayerController使用AVPlayer。
這是一個失敗的直播音頻流的網址:http://bit.ly/1gIqjV6
我AVPlayer代碼(不與URL工作)
_currentItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:@"http://bit.ly/1gIqjV6"]];
[self startObservingPlayerItem:self.currentItem];
_avPlayer = [[AVPlayer alloc] initWithPlayerItem:self.currentItem];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.currentItem];
的AVPlayerItem觀察員
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isEqual:[self.avPlayer currentItem]])
{
if ([keyPath isEqualToString:@"status"])
{
switch ([self.avPlayer currentItem].status) {
case AVPlayerItemStatusReadyToPlay:
NSLog(@"AVPlayerItemStatusReadyToPlay");
break;
case AVPlayerItemStatusFailed:
// The live audio stream always fails, error is always nil
NSLog(@"AVPlayerItemStatusFailed");
NSError* error = self.avPlayer.error;
break;
case AVPlayerItemStatusUnknown:
NSLog(@"AVPlayerItemStatusUnknown");
break;
}
}
}
}
使用MPMoviePlayerController(與URL一起工作正常)
MPMoviePlayerViewController* controller = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"http://bit.ly/1gIqjV6"]];
[rootViewController presentViewController:controller animated:YES completion:nil];
有沒有人遇到過這樣的問題? 在此先感謝。
感謝您的回覆。 我自己並沒有生成m3u8文件,它是由客戶交付給我們的。 我開始查看文件,並開始與我在網上找到的文檔和其他m3u8文件進行比較。 我的原始m3u8是這樣開始的:#EXTM3U 哪個不行。但是,如果我只在第一行添加8:#EXTM3U8它工作得很好。 我能找到的每個文檔都使用#EXTM3U,就像蘋果的所有例子一樣。仍然不知道這可能是什麼解釋。 – Maaike