AVPlayer作为一个功能强大的媒体播放框架,可以播放本地和网络视频,本文华纳云为大家分享如何通过AVPlayer播放在线视频和本地文件,含数据库中读取视频文件的设置方法。
如果是需要播放一个在线视频,先提供这个在线视频的URL,使用AVPlayerItem 和 AVPlayer 来加载和播放视频。主要步骤为:使用 AVPlayer 的前提是在项目中导入 AVFoundation 框架,所以需要先导入 AVFoundation 框架。创建 AVPlayerItem,用视频的 URL 创建一个 AVPlayerItem 实例:
let videoURL = URL(string: "https://example.com/video.mp4")!let playerItem = AVPlayerItem(url: videoURL)
创建 AVPlayer, 使用 AVPlayerItem 实例创建一个 AVPlayer 对象:
let player = AVPlayer(playerItem: playerItem)
调用 AVPlayer 的 play 方法开始播放视频:
player.play()
添加 AVPlayerLayer 显示视频;如果你需要在自定义的 UIView 中显示视频,可以使用 AVPlayerLayer:
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
如果是播放本地视频,如本地数据库中读取的视频文件,步骤为:先从数据库中读取到视频文件的路径,根据需求从数据库中查询视频文件路径。
创建 AVPlayerItem,使用本地视频文件的路径创建一个 AVPlayerItem 实例。
let localVideoPath = "path/to/your/local/video.mp4"let localVideoURL = URL(fileURLWithPath: localVideoPath)let playerItem = AVPlayerItem(url: localVideoURL)
创建 AVPlayer,使用 AVPlayerItem 实例创建一个 AVPlayer 对象。
let player = AVPlayer(playerItem: playerItem)
播放视频,调用 AVPlayer 的 play 方法开始播放视频。
player.play()
添加 AVPlayerLayer 显示视频,如需自定义 UIView 中显示视频,可用 AVPlayerLayer。
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
另外,AVPlayer 提供了多种监听播放状态的方法,例如监听播放进度、错误处理等。为 AVPlayer 添加监听器来响应这些事件。
// 监听播放状态变化
player.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 600), queue: nil) { [weak self] time in
self?.updatePlaybackTime(time: time)}
// 监听播放错误
player.replaceCurrentItem(with: playerItem)
playerItem.addObserver(self, forKeyPath: "status", options: .new, context: nil)
以上,就是关于使用AVPlayer 播放在线视频和本地文件的步骤,不管是从网络URL还是数据库中读取本地文件,AVPlayer 都提供了强大的支持,让视频播放变得简单而高效