iOS 短视频源码开发MPMoviePlayerController
文:布谷惠泽/来源:山东布谷鸟网络
MPMoviePlayerController用来播放视频,在iOS9之后被弃用(iOS9之后苹果推荐我们使用AVPlayer,AVPlayer相对复杂但灵活),由于APP往往要兼容iOS9之前的版本,所有MPMoviePlayerController还是很重要的。
在我的另一篇文章中分享了一个基于MPMoviePlayerController的播放器,大家可以看看,目前还不完整。小伙伴们可以关注一下我的简书。谢谢
MPMoviePlayerController的简单使用需要添加这个框架MediaPlayer.framework#import<MediaPlayer/MediaPlayer.h>
#pragmamark-本地NSString*_moviePath=[[NSBundlemainBundle]pathForResource:@"popeye"ofType:@"mp4"];self.player=[[MPMoviePlayerControlleralloc]initWithContentURL:[NSURLfileURLWithPath:_moviePath]];[self.viewaddSubview:self.player.view];self.player.view.frame=CGRectMake(0,0,self.view.frame.size.width,CGRectGetWidth(self.view.frame)*(9.0/16.0));self.player.movieSourceType=MPMovieSourceTypeFile;//播放本地视频时需要这句//self.player.controlStyle=MPMovieControlStyleNone;//不需要进度条self.player.shouldAutoplay=YES;//是否自动播放(默认为YES)//self.player.scalingMode=MPMovieScalingModeAspectFill;[self.playerprepareToPlay];//缓存//[self.playerplay];//可以不加这句
#pragmamark-网络NSURL*url=[NSURLURLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];_player=[[MPMoviePlayerControlleralloc]initWithContentURL:url];[self.viewaddSubview:self.player.view];self.player.view.frame=CGRectMake(0,0,self.view.frame.size.width,CGRectGetWidth(self.view.frame)*(9.0/16.0));[self.playerprepareToPlay];[self.playerplay];
#pragmamark-直播NSURL*url=[NSURLURLWithString:@"http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"];_player=[[MPMoviePlayerControlleralloc]initWithContentURL:url];[self.viewaddSubview:self.player.view];self.player.view.frame=CGRectMake(0,0,self.view.frame.size.width,CGRectGetWidth(self.view.frame)*(9.0/16.0));self.player.controlStyle=MPMovieSourceTypeStreaming;//直播[self.playerprepareToPlay];//[self.playerplay];MPMoviePlayerController提供了很多通知,这里我就简单的监听2个。我们可以通过监听到的信息做相应的处理。#pragmamark-Notification//监听视频播放结束[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(endPlay)name:MPMoviePlayerPlaybackDidFinishNotificationobject:nil];//监听当前视频播放状态[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(loadStateDidChange:)name:MPMoviePlayerLoadStateDidChangeNotificationobject:nil];#pragmamark-Notificationfunction-(void)endPlay{NSLog(@"播放结束");}-(void)loadStateDidChange:(NSNotification*)sender{switch(self.player.loadState){caseMPMovieLoadStatePlayable:{NSLog(@"加载完成,可以播放");}break;caseMPMovieLoadStatePlaythroughOK:{NSLog(@"缓冲完成,可以连续播放");}break;caseMPMovieLoadStateStalled:{NSLog(@"缓冲中");}break;caseMPMovieLoadStateUnknown:{NSLog(@"未知状态");}break;default:break;}}#pragmamark-dealloc-(void)dealloc{[[NSNotificationCenterdefaultCenter]removeObserver:self];}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。