swift基础学习(十)

本文介绍如何使用AVPlayer进行视频播放,并提供了详细的Swift代码示例。文中还分享了读取本地资源、添加AVPlayer到视图层级等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

####1. 所用到的知识点

  • 用AVPlayer 进行视频播放

####2.效果图

####3.代码

import UIKit
import AVFoundation

class ViewController: UIViewController {

var player: AVPlayer!

let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height


override func viewDidLoad() {
super.viewDidLoad()
creatAvPlayer()
setupUI()
}

//    初始化底部按钮
private func setupUI() {
let Loginbtn: UIButton = UIButton(type: .custom)
Loginbtn.layer.cornerRadius = 2.0
Loginbtn.setTitle("登 陆", for: .normal)
Loginbtn.setTitleColor(UIColor.green, for: .normal)
Loginbtn.layer.masksToBounds = true
Loginbtn.backgroundColor = UIColor.white
Loginbtn.frame = CGRect(x: 30, y: screenHeight - 30 - 64, width: screenWidth - 60, height: 50)
view.addSubview(Loginbtn)

let singupBtn: UIButton = UIButton(type: .custom)
singupBtn.backgroundColor = UIColor.green
singupBtn.layer.cornerRadius = 2.0
singupBtn.layer.masksToBounds = true
singupBtn.setTitle("注 册", for: .normal)

singupBtn.frame = CGRect(x: 30, y: screenHeight - 110 - 64, width: screenWidth - 60, height: 50)
view.addSubview(singupBtn)
}

//    初始化AVPlayer
private func creatAvPlayer() {
let url: URL = URL(fileURLWithPath: Bundle.main.path(forResource: "moments", ofType: "mp4")!)
let asset: AVAsset = AVAsset(url:url)
let playerItem: AVPlayerItem = AVPlayerItem(asset: asset)
playerItem.seek(to: kCMTimeZero)

player = AVPlayer(playerItem: playerItem)

let playerLayer: AVPlayerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.layer.bounds
view.layer.addSublayer(playerLayer)
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect

player.play()

NotificationCenter.default.addObserver(self, selector: #selector(runLoopTheMovie(n:)), name:NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
}

//   通知方法 使得视频循环播放
@objc private func runLoopTheMovie(n: NSNotification) {
let p:AVPlayerItem = n.object as! AVPlayerItem

p.seek(to: kCMTimeZero)
player.play()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


}
复制代码
  • 所遇到的坑 1、读取本地资源要用
let url: URL = URL(fileURLWithPath: Bundle.main.path(forResource: "moments", ofType: "mp4")!)

复制代码

而不是

URL(string: <#T##String#>)
复制代码

2、用AVPlayer 播放视屏的时候 要把AVPlayer添加到AVPlayerLayer上才可以进行播放 3、这个demo 只是很基础的利用AVPlayer进行视屏的播放,还没有进行更多的功能实现,如实现进度条,缓存等功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值