我有点迷失了这个。我有一个类需要播放音频和视频文件或流。它有一个完全自定义的 UI,所以我为此使用 AVPlayer。
有一个实时音频流无法播放。每次AVPlayerItem观察者触发AVPlayerItemStatusFailed,AVPlayer的error为nil。
但是当我尝试在 MPMoviePlayerController 或 Safari 或 Chrome 中播放相同的音频流时,它工作得很好。这非常奇怪,因为 MPMoviePlayerController 在内部使用了 AVPlayer。
这是失败的实时音频流的 URL: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 selectorselector(itemDidFinishPlaying name:AVPlayerItemDidPlayToEndTimeNotification object:self.currentItem];
AVPlayerItem 观察者
-(void)observeValueForKeyPathNSString *)keyPath ofObjectid)object changeNSDictionary *)change contextvoid *)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];
有没有人遇到过这样的问题?
提前致谢。
Best Answer-推荐答案 strong>
看起来这是您的 m3u8 播放列表。我尝试了一个带有简单 AVPlayer 的空白项目,当测试流(“http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8”)以及 your m3u8 文件中的“hi”和“lo”流正常工作时,创建了带有 m3u8 文件的 AVPlayerItem 总是失败。
m3u8中的diff如下:
你的:
#EXT-X-STREAM-INFROGRAM-ID=1, BANDWIDTH=35200, CODECS="mp4a.40.2"
苹果的样本:
#EXT-X-STREAM-INFROGRAM-ID=1, BANDWIDTH=200000
您还有其他 m3u8 播放列表要测试吗?
关于ios - m3u8 音频流在 MPMoviePlayerController 中播放但不是 AVPlayer?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/22772065/
|