在iOS7上播放videostream

我试图在iOS上播放一个简单的直播链接。 有一个视图控制器的button与戏剧行动定义如下。

- (IBAction)play:(id)sender { NSString *path = @"http://asish.flashmediacast.com:2135/live/International/playlist.m3u8"; MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]]; [mp.view setFrame:[self.view bounds]]; [mp prepareToPlay]; [mp play]; } 

那么按下button什么都没有发生。 我检查了链接,它工作正常。 我哪里错了?

我find了一个解决scheme,告诉你创build一个MPMovieViewCOntroller

 MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; mpvc.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; [self presentMoviePlayerViewControllerAnimated:mpvc]; [mpvc release]; 

问题是我怎样称之为ViewCOntroller?

看看这个链接 。 问题不在于URL, MPMoviePlayerViewControllerMPMoviePlayerViewController完美搭配。

 -(IBAction)btnVideoClicked:(id)sender {   @try   {       NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];       GetVideos *obj_video = [arrVideos objectAtIndex:[sender tag]];       MPMoviePlayerViewController *moviePlayerViewController = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL URLWithString:obj_video.VideoPath]];       [moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];       [moviePlayerViewController.moviePlayer setShouldAutoplay:YES];       [moviePlayerViewController.moviePlayer setFullscreen:NO animated:YES];       [moviePlayerViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];       [moviePlayerViewController.moviePlayer setScalingMode:MPMovieScalingModeNone];       [moviePlayerViewController.moviePlayer setUseApplicationAudioSession:NO];       // Register to receive a notification when the movie has finished playing.       [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackStateDidChange:)   name:MPMoviePlayerPlaybackStateDidChangeNotification object:moviePlayerViewController];       // Register to receive a notification when the movie has finished playing.       [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification  object:moviePlayerViewController];       [self presentMoviePlayerViewControllerAnimated:moviePlayerViewController];       moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;       [moviePlayerViewController release];       [pool release];   }   @catch (NSException *exception) {       // throws exception   } } 

你的第一个解决scheme也是对的。 这样,您就可以灵活地为video设置一个框架,并将其放置在屏幕的任何位置。 我想你只错过了将movieSourceType设置为MPMovieSourceTypeStreaming

 - (IBAction)play:(id)sender { NSString *path = @"http://asish.flashmediacast.com:2135/live/International/playlist.m3u8"; MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]]; mp.movieSourceType = MPMovieSourceTypeStreaming; [mp.view setFrame:[self.view bounds]]; [self.view addSubview:mp.view]; [mp prepareToPlay]; [mp play]; } 

另外,通过类似的代码捕获MoviePlayer状态:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackChangeStateCallback:) name:MPMoviePlayerWillExitFullscreenNotification object:mp];