新闻
🎉 - 自 2.1.3 版起,VersaPlayer 支持 iOS、macOS 和 tvOS
社区
如果您有任何疑问或需要任何帮助,请前往 Gitter 并在那里提问!
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install
。
安装
CocoaPods 是一个为 Cocoa 项目提供依赖管理的工具。您可以使用以下命令安装:
$ gem install cocoapods
VersaPlayer 通过 CocoaPods 提供。要安装它,请简单地添加以下行到 Podfile:
pod 'VersaPlayer'
Carthage
Carthage 是一个去中心化的依赖管理器,用于构建你的依赖并提供二进制框架。要使用 Carthage 将 Alamofire 集成到你的 Xcode 项目中,请在你的 Cartfile
中指定它。
github "josejuanqm/VersaPlayer" "3.0.0"
使用方法
基本使用
VersaPlayer的目标是简单易用,同时也很灵活。要开始使用 VersaPlayer,首先以编程方式或通过 Storyboard 创建一个视图。然后添加以下几行代码开始播放视频。
@IBOutlet weak var playerView: VersaPlayerView!
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL.init(string: "http://rmcdn.2mdn.net/Demo/html5/output.mp4") {
let item = VersaPlayerItem(url: url)
playerView.set(item: item)
}
}
添加控件
要为你的播放器添加控件,请使用 VersaPlayerControls 类,它包含多个输出(outlets)来控制你的播放器,你还可以通过自定义实现添加任意数量的控件。
VersaPlayerControls 类包含了以下控件
控件名称 | 类型 | 动作 |
---|---|---|
playPauseButton | VersaStatefullButton | 切换播放 |
fullscreenButton | VersaStatefullButton | 切换全屏模式 |
pipButton | VersaStatefullButton | 在支持的设备上切换画中画(PIP)模式 |
rewindButton | VersaStatefullButton | 倒放 |
forwardButton | VersaStatefullButton | 快进 |
skipForwardButton | VersaStatefullButton | 在 skipSize(在 VersaPlayerControls 中找到)指定的秒数内跳过前方的视频时间 |
skipBackwardButton | VersaStatefullButton | 在 skipSize(在 VersaPlayerControls 中找到)指定的秒数内跳过后方的视频时间 |
seekbarSlider | VersaSeekbarSlider | 在播放过程中进行搜索 |
currentTimeLabel | VersaTimeLabel | 指示当前时间 |
totalTimeLabel | VersaTimeLabel | 指示总时间 |
bufferingView | UIView | 当播放器正在缓冲时显示 |
@IBOutlet weak var playerView: VersaPlayerView!
@IBOutlet weak var controls: VersaPlayerControls!
override func viewDidLoad() {
super.viewDidLoad()
playerView.use(controls: controls)
if let url = URL.init(string: "http://rmcdn.2mdn.net/Demo/html5/output.mp4") {
let item = VersaPlayerItem(url: url)
playerView.set(item: item)
}
}
高级使用
DRM
VersaPlayer 还支持加密内容,要使用此功能,必须实现 VersaPlayerDecryptionDelegate 并将其分配给 VersaPlayer 的 decryptionDelegate 属性。
了解更多关于此主题的信息,请访问
轨道
要使用不同的媒体轨道,例如音频、视频或字幕,请使用VersaPlayer类中的VersaPlayerMediaTracks。
更多关于这些属性的信息,请访问
音频轨道
音频轨道在处理不同语言时特别有帮助,例如在电影播放时。
要选择音频轨道,只需使用 VersaPlayer 的 audioTracks 属性获取可用轨道。
@IBOutlet weak var playerView: VersaPlayer!
...
let tracks: [VersaPlayerMediaTrack] = playerView.player.currentItem?.audioTracks
/// the name of the track
let name = tracks.first?.name
/// the language of the track
let name = tracks.first?.language
/// selecting the first one
tracks.first?.select(for: playerView.player)
视频轨道
在处理不同的版本或每个视频质量的独立流时,视频轨道非常有用。
要选择视频轨道,只需遵循与音频轨道相同的原则。
@IBOutlet weak var playerView: VersaPlayer!
...
let tracks: [VersaPlayerMediaTrack] = playerView.player.currentItem?.videoTracks
/// the name of the track
let name = tracks.first?.name
/// selecting the first one
tracks.first?.select(for: playerView.player)
字幕轨道
字幕轨道几乎总是有用的。这可以从电影回放一直到辅助内容都可以使用。
要选择视频轨道,只需遵循与视频和音频轨道相同的原则。
@IBOutlet weak var playerView: VersaPlayer!
...
let tracks: [VersaPlayerMediaTrack] = playerView.player.currentItem?.captionTracks
/// the name of the track
let name = tracks.first?.name
/// the language of the track
let name = tracks.first?.language
/// selecting the first one
tracks.first?.select(for: playerView.player)
字幕样式
字幕样式通常不由用户管理,但在必要时,VersaPlayer中的captionStyling属性会很有用。
探索所有可以在这里更改的可用属性
扩展
Versa项目的目标是可以灵活运用,这就是为什么它带有扩展功能,允许您通过继承VersaPlayerExtension来自定义播放器的任何方面。
这个类包含一个指向正在使用的播放器实例的player属性。要添加扩展,请使用在https://josejuanqm.github.io/Libraries-Documentation/VersaPlayerCore/Classes/VersaPlayer.html中找到的add(extension ext:)方法。
以下是一些可能对您有用的VersaPlayer扩展。
文档
完整文档可在https://josejuanqm.github.io/Libraries-Documentation/VersaPlayerCore/找到
作者
Jose Quintero - [email protected]
贡献者
使VersaPlayer成为可能的人们,谢谢你们!
捐赠
如果您喜欢这个项目或者这个项目对您有帮助,您可以为我的咖啡☕点个赞哦!非常感谢!
许可证
VersaPlayer是在MIT许可证下可用的。有关更多信息,请参阅LICENSE文件。