我帮你整理一个 AVPlayer 实现简单播放器 的完整入门示例,你可以直接运行测试。


1. AVPlayer 简介

  • AVPlayer 是 iOS/macOS 中 AVFoundation 框架的播放器类,用于播放音视频。
  • 特点
    • 支持本地和网络媒体
    • 支持 HLS、MP4 等常见格式
    • 纯播放类,不带 UI(UI 需要自己用 AVPlayerLayerAVPlayerViewController

2. 基本实现步骤

  1. 导入 AVFoundation
  2. 创建 AVPlayer 对象(本地/网络资源 URL)
  3. AVPlayerLayerAVPlayerViewController 显示画面
  4. 控制播放(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)时,支持直播和点播。
  • 建议监听 AVPlayerItemstatus 和缓冲状态,提升用户体验。