iOS 视频播放的简单使用
最近工作中有用到视频播放的内容,分享一些简单的用法给大家(由于网速问题,本例中使用的是本地的资源进行播放,要播放网络上的修改一些URL即可)
1.iOS9之前的视频播放
首先需要导入MediaPlayer框架. 在iOS9之前视频播放有两种方式.
- 一种是带有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(, , , );
// 设置控制工具栏的样式
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用于视频播放.注意:必须导入两个框架AVKit和AVFoundation 因为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;
}
iOS 视频播放的简单使用的更多相关文章
- iOS视频播放(AVFoundation)
iOS视频播放(AVFoundation) 关于iOS平台的音视频处理,苹果官方提供了OC和swift接口的AVFoundation框架,可以进行各种音频播放和剪辑,底层实现使用了GPU加速,编解码效 ...
- iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)
介绍: 和音频播放一样,ios也提供个很多的API.如mediaPlayer.framework下的MPMediaPlayerController.AVFounditon.framework下的AVP ...
- ios下最简单的正则,RegexKitLite
ios下最简单的正则,RegexKitLite 1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中.备用地址:http://www.coco ...
- iOS中XMPP简单聊天实现 好友和聊天
版权声明本文由陈怀哲首发自简书:http://www.jianshu.com/users/9f2e536b78fd/latest_articles;微信公众号:陈怀哲(chenhuaizhe2016) ...
- iOS百度地图简单使用详解
iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...
- iOS设计模式 - (3)简单工厂模式
iOS设计模式 - (3)简单工厂模式 by Colin丶 转载请注明出处: http://blog.csdn.net/hitwhylz/article/ ...
- 浅谈iOS视频播放的N种解决方案
简 注册登录 添加关注 作者 Maru2016.03.22 20:46* 写了4349字,被135人关注,获得了207个喜欢 字数1621 阅读2895 评论43 喜欢159 header ...
- iOS 视频播放方式整理
初衷 多媒体这整个系列的文章自己也准备好开始整理了,先从视频音频最简单也是最常用的播放出发慢慢的往下深究,探索到底层的编码解码等等,这篇文章就从视频的播放这个最简单的说起. iOS的视频播放方式有几种 ...
- ios视频播放器,代码和界面分离
最近业余时间整理的一个ios播放器,界面采用storyboard,以前几乎都是用代码布局,但是用过一个项目storyboard后,就感觉storyboard很靠谱,团队合作版本控制的问题解决其实很简单 ...
随机推荐
- web开发工具IDE
1.NetBeans 2.Zend Studio 3.JetBrains WebStorm 4.JetBrains PhpStorm 5.Koala 6.Ionic Lab 7.sublime 8.N ...
- Python冒泡排序
冒泡排序,顾名思义,按照一定的规则,把数据一直排下去 直接上代码 import random def bubblesort(data): for i in range(len(data)-1,1,-1 ...
- Linux下high CPU分析心得【非原创】
非原创,搬运至此以作笔记, 原地址:http://www.cnitblog.com/houcy/archive/2012/11/28/86801.html 1.用top命令查看哪个进程占用CPU高ga ...
- SQL Server强制删除复制发布
原文地址:http://blog.csdn.net/leamonjxl/article/details/7352208 SQL Server 中 存在以前(系统还原前)的发布内容,使用鼠标->右 ...
- Python join()方法
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str.join(sequence) 参数 sequence -- 要连接的 ...
- [BZOJ 3531] [Sdoi2014] 旅行 【离线+LCT】
题目链接:BZOJ - 3531 题目分析 题目询问一条路径上的信息时,每次询问有某种特定的文化的点. 每个点的文化就相当于一种颜色,每次询问一条路径上某种颜色的点的信息. 可以使用离线算法, 类似于 ...
- HTML5 Geolocation
http://diveintohtml5.info/geolocation.html http://msdn.microsoft.com/en-us/library/windows/apps/hh44 ...
- SDUT 2351 In Danger
点我看题目 题意 : 有n个兵想要自杀,所以他们决定围成一个圈,从1开始一直环到n,然后每第2个开始自杀,但是有一个兵不想死,所以让你编程求出最后一个应该死的人的位置,这样的话就剩他自己他可以不自杀了 ...
- JavaScript 将字符串转化为json对象
var json = eval('(' + data + ')'); 其中data为字符串数据
- 编译Firebird的源码
编译步骤:一.下载所需的软件 1.下载FB2.0 RC4 http://optusnet.dl.sourceforge.net/sourceforge/firebird/Firebird ...