这里是一个使用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
请登录后发表评论
注册
社交帐号登录