2010-11-29 63 views
11

每一个。我试图找出如何使用MPMoviePlayerController播放直播流。为了测试我正在使用苹果测试流示例http://devimages.apple.com/iphone/samples/bipbopall.html。 它完全在UIWebView中工作,但我无法使它与MPMoviePlayerController一起工作。还有就是我的一段代码:MPMoviePlayerController和HTTP Live Streaming

NSURL *mediaURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbopall.html"]; 
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:mediaURL]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:nil]; 

[mp setControlStyle:MPMovieControlStyleFullscreen]; 
[mp setMovieSourceType:MPMovieSourceTypeStreaming]; 
[mp setFullscreen:YES]; 

[self.view addSubview:[mp view]]; 

[mp prepareToPlay]; 
[mp play]; 

其实控制器临危不MPMoviePlayerPlaybackDidFinishNotification玩什么。哪里有问题?

+0

“***终止应用程序,原因是:“一个AVPlayerItem不能AVPlayer的多个实例相关联'“ – openfrog 2013-08-30 18:30:32

回答

17

你的问题很可能是与URL。 MPMoviePlayerController希望将URL直接发送到要播放的文件。您正在提供影片播放器无法理解的HTML页面的网址。这就是为什么它可以在UIWebView中工作,因为网络浏览器可以理解HTML。如果您想了解什么是错的更多信息,你可以检查错误执行以下操作,从苹果公司的文件引述:

要检查URL加载错误, 寄存器为 MPMoviePlayerContentPreloadDidFinishNotification 或 MPMoviePlayerPlaybackDidFinishNotification 通知。出错时,这些通知包含一个NSError 对象,可以在通知的userInfo 字典中使用@“error” 键。

它看起来是这样的:

- (void) moviePlayBackDidFinish:(NSNotification*)notification { 
    NSError *error = [[notification userInfo] objectForKey:@"error"]; 
    if (error) { 
     NSLog(@"Did finish with error: %@", error); 
    } 
} 

如果你想尝试和播放样品,你可以尝试访问的URL直接流,这将是:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

+0

非常感谢 - 网址是真正的问题。还有一个问题:MPMoviePlayerController - 这是播放现场音频流(如网络收音机)的正确选择吗?我搜索了实现HTTP Live Streaming的方法,并得出结论说MoviePlayer是我需要的东西。 – Andrew 2010-11-29 10:28:59

0

尝试object:mp,而不是object:nilNSNotification

5

您应该使用直接链接到播放列表文件:由于未捕获的异常‘NSInvalidArgumentException’http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

NSURL *mediaURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]; 
MPMoviePlayerController *mediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaURL];