在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, MPMoviePlayerViewController
与MPMoviePlayerViewController
完美搭配。
-(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];