使用AVPlayer播放视频
1. 父类是NSObject
2. AVPlayer可以播放本地音频文件,远程音频文件,本地和远程视频
3. 单纯用AVPlayer播放视频,只能播放声音, 看不到图像;解决方案:需要借助AVPlayerLayer对象,根据player创建图层, 添加到视图上
4. AVPlayerLayer父类是CALayer
使用AVPlayer 播放远程视频
-
objc
// 0准备工作 // 01 导入框架 #import
// 02 iOS9.0 网络请求适配(HTTPS-->HTTP)需在info.plist配置NSAppTransportSecurity // 03 设置成员变量 @property (nonatomic, readwrite, strong) MPMoviePlayerController *moviePlayer; // 1. 通过远程URL创建AVPlayer对象 NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"]; _player = [AVPlayer playerWithURL:remoteURL]; // 2. 开始播放 [self.player play]; // 3 实现视频显示功能 // 3.1 根据player对象, 创建 AVPlayerLayer 对象 AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.player]; // 3.2 添加到需要展示的视图上 [self.view.layer addSublayer:layer]; // 3.3 设置图层 AVPlayerLayer 的大小 // 不要在viewDidLoad设置,此时view的frame不一定准 layer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height * 9 / 16); // 4. 封装专门用于播放的视图 // 主要封装一些操作的工具条 -
swift
// 0 准备工作 // 01 导入框架 import AVFoundation // 02 iOS9.0 网络请求适配(HTTPS-->HTTP)需在info.plist配置NSAppTransportSecurity // 懒加载AVPlayer lazy var player: AVPlayer = { // 1. 通过远程URL创建AVPlayer对象 let url = NSURL(string: "http://v1.mukewang.com/19954d8f-e2c2-4c0a-b8c1-a4c826b5ca8b/L.mp4") let player = AVPlayer(URL: url!) return player }() // 2. 定义图层用于显示视图 var layer: AVPlayerLayer? override func viewDidLoad() { // 2.1 根据player对象, 创建 AVPlayerLayer 对象,并添加到视图中 layer = AVPlayerLayer(player: player) view.layer.addSublayer(layer!) } override func viewWillLayoutSubviews() { // 2.2 设置图层 AVPlayerLayer 的大小 super.viewWillLayoutSubviews() layer?.frame = view.bounds } // 点击时调用 override func touchesBegan(touches: Set
, withEvent event: UIEvent?) { // 3. 开始播放 player.play() }