我帮你整理一个 AVPlayer 实现简单播放器 的完整入门示例,你可以直接运行测试。
1. AVPlayer 简介
- AVPlayer 是 iOS/macOS 中 AVFoundation 框架的播放器类,用于播放音视频。
- 特点:
- 支持本地和网络媒体
- 支持 HLS、MP4 等常见格式
- 纯播放类,不带 UI(UI 需要自己用
AVPlayerLayer
或AVPlayerViewController
)
2. 基本实现步骤
- 导入
AVFoundation
- 创建
AVPlayer
对象(本地/网络资源 URL) - 用
AVPlayerLayer
或AVPlayerViewController
显示画面 - 控制播放(play/pause/seek)
3. 代码示例(Swift)
下面是一个简单的 网络视频播放器:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVPlayer!
var playerLayer: AVPlayerLayer!
override func viewDidLoad() {
super.viewDidLoad()
// 1. 视频地址(支持本地 fileURL 或远程 URL)
guard let url = URL(string: "https://www.w3schools.com/html/mov_bbb.mp4") else { return }
// 2. 创建播放器
player = AVPlayer(url: url)
// 3. 创建显示层
playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)
// 4. 开始播放
player.play()
}
// 播放控制
@IBAction func playVideo() {
player.play()
}
@IBAction func pauseVideo() {
player.pause()
}
}
4. 本地文件播放
如果你要播放本地视频:
let localPath = Bundle.main.path(forResource: "sample", ofType: "mp4")!
let url = URL(fileURLWithPath: localPath)
player = AVPlayer(url: url)
5. AVPlayerViewController(带播放控件)
如果不想自己做 UI,可以直接用:
import AVKit
let playerVC = AVPlayerViewController()
playerVC.player = AVPlayer(url: url)
present(playerVC, animated: true) {
playerVC.player?.play()
}
这样就能直接有播放进度条、全屏按钮等。
6. 注意事项
- 如果播放网络视频,Info.plist 里要加:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
否则 HTTP 视频会被拒绝(仅 HTTPS 默认可用)。
- 播放 HLS(.m3u8)时,支持直播和点播。
- 建议监听
AVPlayerItem
的status
和缓冲状态,提升用户体验。
发表回复