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这种模具型号, 有些不适配.

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

讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!