swift 如何播放本地视频

swift 如何播放本地视频#

在接触 ios 开发的时候,对于本地视频的播放这一功能,遇到了一些困惑.

想要实现的效果#

swift如何播放本地视频
如上图所示,就是想要固定大小的播放视频的区域,然后可以点击播放.

为了实现该效果,做了如下尝试

使用 Avplayer#

import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidLoad()

        //定义一个视频文件路径
        let filePath = Bundle.main.path(forResource: "b", ofType: "mp4")
        let videoURL = URL(fileURLWithPath: filePath!)
        //定义一个playerItem,并监听相关的通知
        let playerItem = AVPlayerItem(url: videoURL)
        NotificationCenter.default.addObserver(self,
                           selector: #selector(playerDidFinishPlaying),
                           name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
                           object: playerItem)
        //定义一个视频播放器,通过playerItem径初始化
        let player = AVPlayer(playerItem: playerItem)
        //设置大小和位置(全屏)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.view.bounds
        //添加到界面上
        self.view.layer.addSublayer(playerLayer)
        //开始播放
        player.play()
    }

    //视频播放完毕响应
    @objc func playerDidFinishPlaying() {
        print("播放完毕!")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

实现效果:

swift如何播放本地视频
通过自带的 avplayer 可以实现,如上图所示的效果,但是没有再次播放按钮,这就导致需要自己绑定一个 button, 使得按钮与视频区域不是在一起.
然后还有就是用 AVPlayerViewController 来实现,但是这是全屏播放的,不是我想要的效果.

使用第三方插件#

这里我使用的是 github 收藏有 1.5k 的 BMPlayer, 但是发现可能没有人维护后,对于 iPhone X 这种模具型号,有些不适配.

希望有做和我类似效果的朋友,可以指点一下,目前对于我需要实现的效果,用的是什么思路.