前言
上一篇咱们现已把视频页面的屏幕旋转搞好了,现在咱们开端做一下视频播映
视频播映
视频播映的话咱们运用Swift
版的Player库,下面是效果swift系统图swifter

1、依据效果图把所需的icon导入到工程里边
2、在PlayerViewContrapproveoller
里边增加url
和id
特点,url
便是视频的url
,id
则是恳求右侧数据的id
private var url: String private var id: String init(url: String, id: String) { self.url = url self.id = id if let delegate = UIApplication.shared.delegate as? AppDelegate { delegate.orientationMask = .landscapeRight } super.init(nibName: nil, bundle: nil) }
3、Player
的运用
Player
一些特点
/// Player delegate. open weak var playerDelegate: PlayerDelegate? /// Playback delegate. open weak var playbackDelegate: PlayerPlaybackDelegate? /// - Parameter url: URL of the asset. open var url: URL? /// Volume for the player, ranging from 0.0 to 1.0 on a linear scale. open var volume: Float /// Pauses playback automatically when resigning active. open var playbackPausesWhenResigningActive: Bool = true /// Pauses playback automatically when backgrounded. open var playbackPausesWhenBackgrounded: Bool = true /// Resumes playback when became active. open var playbackResumesWhenBecameActive: Bool = true /// Resumes playback when entering foreground. open var playbackResumesWhenEnteringForeground: Bool = true /// Playback freezes on last frame frame when true and does not reset seek position timestamp.. open var playbackFreezesAtEnd: Bool = false /// Current playback state of the Player. open var playbackState: PlaybackState = .stopped /// Current buffering state of the Player. open var bufferingState: BufferingState = .unknown /// Maximum duration of playback. open var maximumDuration: TimeInterval /// Media playback's current time interval in seconds. open var currentTimeInterval: TimeInterval /// Media playback's current time. open var currentTime: CMTime
Playappearer
一方法
/// 从头开端播映 Begins playback of the media from the beginning. open func playFromBeginning() /// 从当时时刻开端播映 Begins playback of the media from the current time. open func playFromCurrentTime() /// 暂停播映 Pauses playback of the media. open func pause() /// 中止播映 Stops playback of the media. open func stop() /// 快进/快退 /// Updates playback to the specified time. /// /// - Parameters: /// - time: The time to switch to move the playback. /// - completionHandler: Call block handler after seeking/ open func seek(to time: CMTime, completionHandler: ((Bool) -> Swift.Void)? = nil)
Player
的PlayerDelegate
和PlayerPapprovelaybackDappearelegate
/// Player delegate protocol public protocol PlayerDelegate: AnyObject { func playerReady(_ player: Player) func playerPlaybackStateDidChange(_ player: Player) func playerBufferingStateDidChange(_ player: Player) // This is the time in seconds that the video has been buffered. // If implementing a UIProgressView, user this value / player.maximumDuration to set progress. func playerBufferTimeDidChange(_ bufferTime: Double) func player(_ player: Player, didFailWithError error: Error?) } /// Player playback protocol public protocol PlayerPlaybackDelegate: AnyObject { func playerCurrentTimeDidChange(_ player: Player) func playerPlaybackWillStartFromBeginning(_ player: Player) func playerPlaybackDidEnd(_ player: Player) func playerPlaybackWillLoop(_ player: Player) func playerPlaybackDidLoop(_ player: Player) }
3.1、懒加载player
/// 懒加载 private lazy var player: Player = { let player = Player() player.playerDelegate = self player.playbackDelegate = self player.playbackFreezesAtEnd = true /// 播映在最终一帧中止 player.playerView.playerBackgroundColor = .black player.view.backgroundColor = UIColor.black player.playbackResumesWhenBecameActive = false return player }()
3.2、布局playappstoreer
/// 布局player private func addSubviews() { view.backgroundColor = UIColor.black addChild(player) view.addSubview(player.view) player.didMove(toParent: self) player.view.snp.makeConstraints { (make) in make.edges.equalToSuperview() } }
3.3、增加PlayerDelegate
extension PlayerViewController: PlayerDelegate { /// 开端播映 func playerReady(_ player: Player) { } /// 播映状况 func playerPlaybackStateDidChange(_ player: Player) { } /// 缓冲状况 func playerBufferingStateDidChange(_ player: Player) { } /// 缓冲进展 func playerBufferTimeDidChange(_ bufferTime: Double) { } /// 播映过错 func player(_ player: Player, didFailWithError error: Error?) { } }
播映状况和反冲状况都是枚举,咱们来看看其定义
PlaybackState
/// Asset playback states. public enum PlaybackState: Int, CustomStringConvertible { case stopped = 0 /// 中止播映 case playing /// 播映 case paused /// 暂停 case failed /// 播映过错 public var description: String { get { switch self { case .stopped: return "Stopped" case .playing: return "Playing" case .failed: return "Failed" case .paused: return "Paused" } } } }
BufferingState
/// Asset buffering states. public enum BufferingState: Int, CustomStringConvertible { case unknown = 0 case ready case delayed public var description: String { get { switch self { case .unknown: return "Unknown" case .ready: return "Ready" case .delayed: return "Delayed" } } } }
3.4、增加PlayerPlaybackDelegate
extension PlayerViewController: PlayerDelegate { /// 播映进展 func playerCurrentTimeDidChange(_ player: Player) { } func playerPlaybackWillStartFromBeginning(_ player: Player) { } /// 播映完毕 func playerPlaybackDidEnd(_ player: Player) { } func playerPlaybackWillLoop(_ player: Player) {} func playerPlaybackDidLoop(_ player: Player) {} }
3.5、播映
player.url = URL(string: url) player.playFromBeginning()

视频播映就做完了,接下来便是增加控制层来swift是什么组织缩写控制播映
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)