📜  在 AVPlayer ViewController 中播放视频示例代码 Swift (1)

📅  最后修改于: 2023-12-03 14:50:51.450000             🧑  作者: Mango

在 AVPlayer ViewController 中播放视频示例代码 Swift

简介

在 iOS 应用中播放视频,可以使用 AVPlayer 和 AVPlayerViewController。AVPlayer 是一个基于 AVFoundation 框架的播放器,而 AVPlayerViewController 提供了一个用户界面来控制 AVPlayer 的播放状态。本示例代码将演示使用 AVPlayerViewController 在 Swift 中播放本地视频文件。

代码示例
import UIKit
import AVFoundation
import AVKit

class ViewController: UIViewController {
    var player: AVPlayer!
    var playerController: AVPlayerViewController!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 视频文件路径
        guard let url = Bundle.main.url(forResource: "video", withExtension: "mp4") else {
            return
        }

        // 创建 AVPlayer
        player = AVPlayer(url: url)

        // 创建 AVPlayerViewController
        playerController = AVPlayerViewController()

        // 将 AVPlayer 关联到 AVPlayerViewController
        playerController.player = player

        // 设置 AVPlayerViewController 完成后自动关闭播放器
        playerController.allowsPictureInPicturePlayback = false
        playerController.delegate = self

        // 自动播放视频
        player.play()

        // 添加 AVPlayerViewController 至界面中
        addChildViewController(playerController)
        view.addSubview(playerController.view)
        playerController.view.frame = view.bounds
        playerController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    }
    
    // 界面消失时停止播放器
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        player.pause()
    }
}

extension ViewController: AVPlayerViewControllerDelegate {
    // 播放完毕关闭播放器
    func playerViewControllerDidStopPictureInPicture(_ playerViewController: AVPlayerViewController) {
        playerViewController.dismiss(animated: true, completion: nil)
    }

    func playerViewController(_ playerViewController: AVPlayerViewController, failedToStartPictureInPictureWithError error: Error) {
        // Handle failure here.
        print("Failed to start PiP: \(error)")
    }
}

代码说明
  1. 引入 UIKitAVKitAVFoundation 模块
  2. 声明 AVPlayerAVPlayerViewController 类型的变量
  3. viewDidLoad 函数中,获取本地视频文件的路径,并通过 AVPlayer 创建播放器实例
  4. 创建 AVPlayerViewController 实例,并将 AVPlayer 关联到其中
  5. 添加 AVPlayerViewController 到当前 ViewController 中,并设置其大小,并自动播放
  6. viewWillDisappear 函数中停止播放
  7. AVPlayerViewControllerDelegate 中处理播放完毕和其他事件
代码效果

本示例代码可以播放应用中名为 video.mp4 的本地视频文件。视频将自动播放,并且在播放完成后自动关闭 AVPlayerViewController

注:需在项目中添加 video.mp4 视频文件。