1.视频播放新功能

iOS8.0之后新增了AVPlayerViewController,集成了AVPlayer

iOS9.0之后增加了快进和后退功能,播放视频特别方便,再也不用复杂地封装AVPlayer功能了,目前iOS8.0,iOS7.0等低版本系统的占有率不超过5%了,可以慢慢考虑不用适配iOS8.0一下的版本了了


API_AVAILABLE(ios(8.0))
@interface AVPlayerViewController : UIViewController@property (nonatomic, strong, nullable) AVPlayer *player;
@property (nonatomic) BOOL showsPlaybackControls;
@property (nonatomic, copy) NSString *videoGravity;
@property (nonatomic, readonly, getter = isReadyForDisplay) BOOL readyForDisplay;
@property (nonatomic, readonly) CGRect videoBounds;
@property (nonatomic, readonly, nullable) UIView *contentOverlayView;@property (nonatomic) BOOL allowsPictureInPicturePlayback API_AVAILABLE(ios(9.0));@property (nonatomic) BOOL updatesNowPlayingInfoCenter API_AVAILABLE(ios(10.0));@property (nonatomic) BOOL entersFullScreenWhenPlaybackBegins API_AVAILABLE(ios(11.0));
@property (nonatomic) BOOL exitsFullScreenWhenPlaybackEnds API_AVAILABLE(ios(11.0));
@property (nonatomic, weak, nullable) id <AVPlayerViewControllerDelegate> delegate API_AVAILABLE(ios(9.0));@end//iOS9.0之后才能使用代理
@protocol AVPlayerViewControllerDelegate <NSObject>
@optional
- (void)playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController;- (void)playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController;- (void)playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error;- (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController;- (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController;- (BOOL)playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController;- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;@end

2.代码实现

#import "ViewController.h"#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>@interface ViewController ()@property (nonatomic, strong) AVPlayerViewController *playerVC;@end@implementation ViewController//ios8.0之后才能使用
- (AVPlayerViewController *)playerVC{if (!_playerVC) {_playerVC = [[AVPlayerViewController alloc] init];// 根据URL创建AVPlayerNSURL *remoteURL = [NSURL URLWithString:@"http://bos.nj.bpc.baidu.com/tieba-smallvideo/11772_3c435014fb2dd9a5fd56a57cc369f6a0.mp4"];AVPlayer *player = [AVPlayer playerWithURL:remoteURL];_playerVC.player = player;//iOS9.0新增_playerVC.allowsPictureInPicturePlayback = YES;}return _playerVC;
}- (void)viewDidLoad {[super viewDidLoad];self.title = @"网络视频播放";self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(playVideo)];UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(200, 200, 100, 50)];btn.center = self.view.center;[btn setTitle:@"播放" forState:UIControlStateNormal];[btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];[btn addTarget:self action:@selector(playVideo) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];
}- (void)playVideo{if(self.presentedViewController) return;// 直接弹出;[self presentViewController:self.playerVC animated:YES completion:nil];// 开始播放[self.playerVC.player play];
}@end

iOS8.1的使用效果

iOS9.0效果

iOS10.0效果

iOS11.2效果

iOS 音视频之网络视频播放AVPlayerViewController(iOS8.0+使用)相关推荐

  1. iOS音视频的那些事儿(一):数据的采集和编码

    1.AVFoundation简介 AVFoundation是苹果在iOS和OS X系统中用于处理基于时间的媒体数据的Objective-C框架. 供使用者来开发媒体类型的应用程序. 如果只是进行简单的 ...

  2. IOS音视频(一)AVFoundation核心类

    IOS音视频(一)AVFoundation核心类 1. AVFoundation框架架构简介 1.1 AVFoundation框架 1.2 AVFoundation 之 Assets 1.3 AVFo ...

  3. iOS音视频实现边下载边播放

    iOS音视频实现边下载边播放 近段时间制作视频播放社区的功能,期间查找了不少资料,做过很多尝试,现在来整理一下其中遇到的一些坑.由于考虑到AVPlayer对视频有更高自由度的控制,而且能够使用它自定义 ...

  4. IOS音视频(三)AVFoundation 播放和录音

    IOS音视频(三)AVFoundation 播放和录音 1. 音频理论知识 1.1 声音的物理性质 1.2 数字音频 1.2.1 采样.量化和编码 1.2.2 音频编码 1.3 音频编解码 2. 播放 ...

  5. iOS音视频开发七:视频采集

    将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第七篇:iOS 视频采集 Demo.这个 ...

  6. iOS音视频开发八:视频编码,H.264 和 H.265 都支持

    我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第八篇:iOS 视频编码 Demo. ...

  7. IOS音视频(四十六)离线在线语音识别方案

    IOS音视频(四十六)离线在线语音识别方案 IOS音视频(四十六)离线在线语音识别方案 方案一:Siri语音识别 Siri语音识别简介 Siri语音识别功能类介绍 Siri语音识别功能集成 方案二:百 ...

  8. 流媒体服务器开发——SRS 4.0与WebRTC音视频通话丨音视频开发丨嵌入式开发丨FFmpeg丨iOS音视频开发

    SRS 4.0与WebRTC音视频通话 1. 音视频高薪岗位都需要什么技能点 2. WebRTC的技术点分析 3. SRS 4.0如何使用WebRTC 视频讲解如下,点击观看: 流媒体服务器开发--S ...

  9. IOS音视频(四十三)AVFoundation 之 Audio Session

    IOS音视频(四十三)AVFoundation 之 Audio Session 1.音频会话概述 2. 配置音频会话 2.1 音频会话默认行为 2.2 配置音频会话 2.3 使用多路由类别扩展选项 2 ...

最新文章

  1. 小学生 python教程-Python最佳学习路线图
  2. centos 安装java1.7_centOs安装jdk1.7
  3. 应聘腾讯,面试官和我聊了一个小时的人生
  4. Kaggle债务违约预测冠军经验分享
  5. 安卓开发 登录用户信息缓存_小程序云开发之用户注册登录
  6. 【深度学习】Tensorflow完成线性回归对比机器学习LinearRegression()
  7. nagios整合cacti2011版(五)
  8. 小米 10 年再创业,高端 5G 手机和 AIoT 有多少机会?
  9. java读properties的通用类,兼容linux和windows
  10. Python迷宫游戏(基础版)
  11. Linux之Shell编程详解
  12. 推荐一个开源好用的ER图、流程图作图软件-draw.io
  13. 北京内推 | 微软亚洲研究院机器学习组招聘AI药物发现研究实习生
  14. 在iPhone设置一个快捷指令,一键将PDF转为图片
  15. 资源调度有什么技术难点?
  16. 倍福--本地电脑配置EtherCAT网卡
  17. SMMS:一个不错的免费图床
  18. MySQL数据查询之多表查询
  19. 批处理--删除当前目录及子目录中的空文件夹或文件
  20. Python 中的json.load() 和json.loads()

热门文章

  1. C++著名类库和C++标准库介绍
  2. 为什么要做微信小程序
  3. android百度测试,【腾讯百度测试面试题】面试问题:Android… - 看准网
  4. 360随身WiFi能免费上网吗?
  5. 信息学奥赛一本通 1399:甲流病人初筛 | OpenJudge NOI 1.12 03:甲流病人初筛
  6. 鸣志机器人_鸣志:站位智能制造高地,解锁运动控制数字化转型之道
  7. 善待安达信的孩子zz
  8. 【一键生成】3DMAX配景楼生成插件使用教程
  9. 吴恩达机器学习(十三)使用matlab实现代价函数
  10. 钱诚12.31黄金原油最新行情资讯分析,纸白银投资操作指南