这里是一个使用Swift 4.0实现的视频播放器示例,包含视频播放、屏幕旋转、倍速播放、手势调节、锁屏面板等功能:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVPlayer?
var playerLayer: AVPlayerLayer?
var rateButtonTitles = ["0.5x", "1x", "1.5x", "2x"]
var rateButtons = [UIButton]()
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://domain/video.mp4")!
player = AVPlayer(url: url)
playerLayer = AVPlayerLayer(player: player)
playerLayer?.frame = view.bounds
view.layer.addSublayer(playerLayer!)
// 屏幕旋转
NotificationCenter.default.addObserver(self, selector: #selector(rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
// 视频完成后重播
NotificationCenter.default.addObserver(self, selector: #selector(ended), name: .AVPlayerItemDidPlayToEndTime, object: player!.currentItem)
// 播放控制界面
setupControls()
}
// MARK: - 视频控制
// 倍速播放按钮
func setupRateButtons() {
for i in 0..<rateButtonTitles.count {
let button = UIButton(type: .system)
button.setTitle(rateButtonTitles[i], for: .normal)
button.tag = i
button.addTarget(self, action: #selector(changeRate(_:)), for: .touchUpInside)
rateButtons.append(button)
view.addSubview(button)
}
}
// 改变播放速度
@objc func changeRate(_ sender: UIButton) {
let rate = [0.5, 1, 1.5, 2][sender.tag]
player!.setRate(rate, time: nil)
}
// 屏幕旋转后的布局
@objc func rotated() {
playerLayer?.frame = view.bounds
setupControls()
}
// 视频结束后重新播放
@objc func ended() {
player!.seek(to: CMTime.zero)
player!.play()
}
}
该示例使用AVFoundation框架实现视频的播放、暂停、倍速调整等功能,并使用NotificationCenter监听屏幕方向改变和视频播放结束,进行相应处理。
同时示例还创建了用于切换播放速度的按钮组,并实现了点击按钮改变播放速度的功能。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END




















请登录后发表评论
注册
社交帐号登录