iOS 短视频源码开发MPMoviePlayerController
短信预约 -IT技能 免费直播动态提醒
文:布谷惠泽/来源:山东布谷鸟网络
MPMoviePlayerController用来播放视频,在iOS9之后被弃用(iOS9之后苹果推荐我们使用AVPlayer,AVPlayer相对复杂但灵活),由于APP往往要兼容iOS9之前的版本,所有MPMoviePlayerController还是很重要的。
在我的另一篇文章中分享了一个基于MPMoviePlayerController的播放器,大家可以看看,目前还不完整。小伙伴们可以关注一下我的简书。谢谢
MPMoviePlayerController的简单使用需要添加这个框架MediaPlayer.framework#import <MediaPlayer/MediaPlayer.h>
#pragma mark - 本地 NSString* _moviePath=[[NSBundle mainBundle]pathForResource:@"popeye" ofType:@"mp4"]; self.player=[[MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:_moviePath]]; [self.view addSubview: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.player prepareToPlay];//缓存// [self.player play];//可以不加这句
#pragma mark - 网络 NSURL* url = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"]; _player = [[MPMoviePlayerController alloc] initWithContentURL:url]; [self.view addSubview: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 prepareToPlay]; [self.player play];
#pragma mark - 直播 NSURL* url = [NSURL URLWithString:@"http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"]; _player = [[MPMoviePlayerController alloc] initWithContentURL:url]; [self.view addSubview: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.player prepareToPlay];// [self.player play];MPMoviePlayerController提供了很多通知,这里我就简单的监听2个。我们可以通过监听到的信息做相应的处理。#pragma mark - Notification //监听视频播放结束 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(endPlay) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; //监听当前视频播放状态 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; #pragma mark - Notification function -(void)endPlay{ NSLog(@"播放结束");} -(void)loadStateDidChange:(NSNotification*)sender{ switch (self.player.loadState) { case MPMovieLoadStatePlayable: { NSLog(@"加载完成,可以播放"); } break; case MPMovieLoadStatePlaythroughOK: { NSLog(@"缓冲完成,可以连续播放"); } break; case MPMovieLoadStateStalled: { NSLog(@"缓冲中"); } break; case MPMovieLoadStateUnknown: { NSLog(@"未知状态"); } break; default: break; }} #pragma mark - dealloc - (void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self];}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341