0

私のアプリでは、次のコードでライブストリーミングを行っています:

-(void)playurl:(id)sender
{
    self.mpPlayer=[[[MPMoviePlayerController alloc]initWithContentURL:[NSURL URLWithString:@"http://alwatan.lsops.net/live/alwradio_ar_audio.sdp/playlist.m3u8"]] autorelease];

    [self.mpPlayer prepareToPlay];

    if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.mpPlayer.view.frame = CGRectMake(0, 50, 768, 400);        
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        self.mpPlayer.view.frame = CGRectMake(0, 0, 1024, 500);
    }    
    [self.mpPlayer play];
    self.mpPlayer.movieSourceType = MPMovieSourceTypeStreaming;
    //self.mpPlayer.movieSourceType = MPMovieSourceTypeFile;
    self.mpPlayer.shouldAutoplay = TRUE;


    self.mpPlayer.controlStyle = MPMovieControlStyleDefault;
    [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification  object:mpPlayer]; 
    [scrollView addSubview:self.mpPlayer.view];
    if(isVideoPlay)
    {
        isVideoPlay = FALSE;
    }
    else
    {
        isVideoPlay = TRUE;
    }
}

- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
    NSError *error = [[notification userInfo] objectForKey:@"error"];
    if (error) {
    }
    else
    {
        MPMoviePlayerController *moviePlayer = [notification object];  
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; 
    }
}

すべて問題ありませんが、私の問題は、URL が実行されておらず、アプリケーションがクラッシュすることです。ライブ ストリーミングの URL 応答を確認して、状態を管理し、URL が応答しないことを警告するにはどうすればよいでしょうか。

ありがとう、

4

2 に答える 2

0

私の経験でMPMoviePlayerControlerは、エラー処理があまり得意ではありませんでした。1 つの可能性は、最初に URL を要求してから、ストリームの実行中にのみ .m3u8 ファイルをロードすることです。

と フレンドを使用NSURLConnectionしてストリームを読み込んでみ、必要に応じてストリームが実行中であることを示す特定のものを探してファイルを読み取ることができます (おそらく#EXTINF:.

于 2012-07-13T14:40:50.313 に答える
0

次の通知を使用する

MPMoviePlayerPlaybackStateDidChangeNotification

そしてチェック

      if(moviePlayer.state == MPMoviePlaybackStateStopped)
{
// Alert
}
else  if(moviePlayer.state == MPMoviePlaybackStatePlaying)
{
// Alert
}
else  if(moviePlayer.state == MPMoviePlaybackStatePaused)
{
// Alert
}
else  if(moviePlayer.state == MPMoviePlaybackStateInterrupted)
{
// Alert
}

else  if(moviePlayer.state == MPMoviePlaybackStateSeekingForward)
{
// Alert
}
else  if(moviePlayer.state == MPMoviePlaybackStateSeekingBackward)
{
// Alert
}
于 2012-07-13T12:21:20.877 に答える