swfit——使用AVPlayer自定义VideoView

先看看效果: 播放本地视频: guard let file = Bundle.main.path(forResource: "radio", ofType: ".mp4") else { NSLog("No found File") return } videoView?.setVideoData(
摘要由CSDN通过智能技术生成

先看看效果:
播放本地视频:

        guard let file = Bundle.main.path(forResource: "radio", ofType: ".mp4") else {
            NSLog("No found File")
            return
        }
        videoView?.setVideoData(filePath: file)

在线视频:

        DispatchQueue.main.async(execute: {
            self.videoView?.setVideoData(url: "http://bos.nj.bpc.baidu.com/tieba-smallvideo/11772_3c435014fb2dd9a5fd56a57cc369f6a0.mp4")
        })

竖屏效果
这里写图片描述

横屏效果
这里写图片描述

自定义View,目的是将一些功能做整体封装,方便使用。
自定义View,首先要了解下View加载显示过程中的一些函数,了解它们的调用时序,方便在封装时可以依附这个时序做初始化跟释放等工作:

     //即将添加子视图时调用
    override func willRemoveSubview(_ subview: UIView) {
    }

    //当子视图添加完成是调用
    override func didAddSubview(_ subview: UIView) {
    }

    //视图附属的Window对象即将改变
    override func willMove(toWindow newWindow: UIWindow?) {
    }

    //视图附属的Window对象已经改变
    override func didMoveToWindow() {
    }

    //视图附属的父View即将改变
    override func willMove(toSuperview newSuperview: UIView?) {
    }

    //视图附属的父View已经改变
    override func didMoveToSuperview() {
    }

使用AVPlayer播放多媒体,需要了解以下几个类:

AVPlayer:媒体播放控制的组件
AVPlayerItem: 提供当前播放媒体文件的信息和状态
AVPlayerLayer: 做视频现实用

先自定义一个类VideoView,添加三个属性,调整get set方法使三个对象关联起来:

import UIKit
import AVKit
import AVFoundation

class JVideoView: UIView {
    var videoLayer: AVPlayerLayer? = nil
    var playerItem: AVPlayerItem? {
        set {
            self.player?.replaceCurrentItem(with: newValue)
        }

        get {
            return self.player?.currentItem
        }
    }

    var player : AVPlayer? {
        get {
            return self.videoLayer?.player
        }

        set {
            self.videoLayer?.player = newValue
        }
    }
}

添加属性初始化࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值