博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 视频播放的简单使用
阅读量:5019 次
发布时间:2019-06-12

本文共 3457 字,大约阅读时间需要 11 分钟。

最近工作中有用到视频播放的内容,分享一些简单的用法给大家(由于网速问题,本例中使用的是本地的资源进行播放,要播放网络上的修改一些URL即可)

1.iOS9之前的视频播放

  首先需要导入MediaPlayer框架. 在iOS9之前视频播放有两种方式.

  1. 一种是带有View的MPMoviePlayerViewController;
// 1. 带有View的控制器 NSURL *url = [[NSBundle mainBundle] URLForResource:@"Alizee_La_Isla_Bonita.mp4" withExtension:nil]; //  创建视频播放器 MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; //  展示 [self presentMoviePlayerViewControllerAnimated:mpvc];

    2. 一种是不带View的MPMoviePlayerController

//  1. 不带View的(这里不带view是指控制器的名字中没有带view,只是做个区分,不过它需要设置自身的view) NSURL *url = [[NSBundle mainBundle] URLForResource:@"Alizee_La_Isla_Bonita.mp4" withExtension:nil]; MPMoviePlayerController *mpc = [[MPMoviePlayerController alloc] initWithContentURL:url];//这里大小是随意设的,要看工作需要 mpc.view.frame = CGRectMake(40, 50, 200, 200); //  设置控制工具栏的样式 mpc.controlStyle = MPMovieControlStyleEmbedded; //  把播放视图添加到控制器的view上 [self.view addSubview:mpc.view]; //  开始播放 [mpc play]; //  强引用 self.mpc = mpc;

3.通过监听播放完的通知来实现自动播放下一个视频

//  注册通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinishNotification:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
/// 当播放结束了调用该方法  - (void) moviePlayerPlaybackDidFinishNotification:(NSNotification *) notification {      NSLog(@"%@",notification.userInfo);      MPMovieFinishReason reason  = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];  //  如果是正常结束的播放下一曲      if (reason == MPMovieFinishReasonPlaybackEnded) {          NSURL *url = [[NSBundle mainBundle] URLForResource:@"Cupid_高清.mp4" withExtension:nil];          self.mpc.contentURL = url;          [self.mpc play];      }  }

2.iOS9之后的视频播放

iOS9 新增AVKit框架,新增类AVPlayerViewController用于视频播放.注意:必须导入两个框架AVKitAVFoundation 因为AVPlayerViewController本身不具备视频播放的能力,必须给他一个AVPlayer.

代码实现:

//播放视频    //注意点: 1. 必须给他一个播放AVPlayer,而AVPlayer在AVFoundation中,所以需要导入AVFondation框架     //       2. 画中画在iPadAir2和iPadPro才能使用.     - (IBAction)play:(id)sender {     //  创建视频播放器         AVPlayerViewController *playerVc = [[AVPlayerViewController alloc] init];     //  需要创建一个播放对象赋值给这个控制器         NSURL *URL = [[NSBundle mainBundle] URLForResource:@"Alizee_La_Isla_Bonita.mp4" withExtension:nil];     //  设置播放器         playerVc.player = [AVPlayer playerWithURL:URL];         [self presentViewController:playerVc animated:YES completion:^{     //  开始播放             [playerVc.player play];         }];     //  设置代理         playerVc.delegate = self;     }

补充:画中画的一些常用代理方法

- (void) playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController{     NSLog(@"即将开始画中画"); } - (void) playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController{     NSLog(@"已经开始画中画"); } - (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController{     NSLog(@"即将停止画中画"); } - (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController {     NSLog(@"画中画已经停止"); } - (void) playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error {     NSLog(@"开启画中画失败:%@",error); } /// 当播放器是modal出来的时候,当画中画的时候,是否要关闭弹出的播放控制器;默认YES - (BOOL) playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController{     NSLog(@"%s",__FUNCTION__);     return NO; }

 

转载于:https://www.cnblogs.com/somethingWithiOS/p/5631107.html

你可能感兴趣的文章
html5 拖曳功能的实现[转]
查看>>
[BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
查看>>
java导出word[xml方式]
查看>>
mysql load_file()和 into outfile
查看>>
响应式布局编码
查看>>
微服务实战(三):深入微服务架构的进程间通信 - DockOne.io
查看>>
Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
查看>>
Java:类与继承
查看>>
struts2-(2)HelloWorld
查看>>
python常用函数 库 转
查看>>
第一次爱你得是啥时候
查看>>
Redis4- llist的操作
查看>>
AJAX 实战【三级联动】分析
查看>>
日志收集思考
查看>>
asp.net 发布后,遇到的导出excel报错的问题
查看>>
(转)Spring boot——logback.xml 配置详解(四)<filter>
查看>>
项目中操作redis改brpop阻塞模式为订阅模式的实现-java实习笔记二
查看>>
PHP中各种Hash算法性能比较
查看>>
对象深度克隆
查看>>
12动态规划运用实例
查看>>