AVFoundation-AVPlayer

使用AVPlayer播放视频

1. 父类是NSObject
2. AVPlayer可以播放本地音频文件,远程音频文件,本地和远程视频
3. 单纯用AVPlayer播放视频,只能播放声音, 看不到图像;解决方案:需要借助AVPlayerLayer对象,根据player创建图层, 添加到视图上
4. AVPlayerLayer父类是CALayer

使用AVPlayer 播放远程视频

  1. 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. 封装专门用于播放的视图
    // 主要封装一些操作的工具条
    
  2. 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()
    }
    

你可能感兴趣的:(AVFoundation-AVPlayer)