2010-11-29 102 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];