Iphone MPMoviePlayerController和HTTP实时流媒体

Iphone MPMoviePlayerController和HTTP实时流媒体,iphone,mpmovieplayercontroller,Iphone,Mpmovieplayercontroller,每个人。我正试图弄清楚如何使用MPMoviePlayerController播放直播流。对于测试,我使用苹果测试流样本。 它在UIWebView中工作得很好,但我无法让它与MPMoviePlayerController一起工作。这是我的一段代码: NSURL *mediaURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbopall.html"]; MPMoviePlayerController *

每个人。我正试图弄清楚如何使用MPMoviePlayerController播放直播流。对于测试,我使用苹果测试流样本。 它在UIWebView中工作得很好,但我无法让它与MPMoviePlayerController一起工作。这是我的一段代码:

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];

实际上,控制器接收MPMoviePlayerPlaybackDidFinish通知而不播放任何内容。问题在哪里

NSNotification
中尝试
object:mp
而不是
object:nil
,您的问题可能是URL
MPMoviePlayerController
希望URL直接指向要播放的文件。您正在为电影播放器无法理解的
HTML
页面提供URL。这就是为什么它可以在
UIWebView
中工作,因为web浏览器可以理解
HTML
。如果您想了解更多有关错误的信息,可以通过以下操作检查错误,引用苹果的文档:

要检查URL加载中的错误, 报名参加 MPMoviePlayerContentPreloadFinishNotification 或 MPMoviePlayerPlaybackDidFinishNotification 通知。如果出现错误,这些 通知包含一个N错误 对象使用@“error”可用 输入通知的userInfo 字典

它看起来像:

- (void) moviePlayBackDidFinish:(NSNotification*)notification {
    NSError *error = [[notification userInfo] objectForKey:@"error"];
    if (error) {
        NSLog(@"Did finish with error: %@", error);
    }
}
如果您想尝试播放该示例,您可以尝试直接访问流的URL,该URL为:

@Andrew:

以下是苹果公司的HTTP直播文档,包括示例代码


Dung.

您应该使用直接链接播放列表文件:


非常感谢-url才是真正的问题。还有一个问题:MPMoviePlayerController-这是播放实时音频流(如互联网广播)的正确选择吗?我搜索了实现HTTP实时流媒体的方法,得出结论,MoviePlayer是我需要的东西。不客气。我自己没有做过任何流媒体,所以我无法评论哪种方法是最好的。”***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“一个AVPlayerItem不能与AVPlayer的多个实例相关联”
NSURL *mediaURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
MPMoviePlayerController *mediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaURL];