ModernAVPlayer
是一个持久化的 AVPlayer
包装器
从版本 1.5.1 开始,从后台模式恢复播放失败。如果您有任何建议,请帮忙。
使用 mixWithOther AVAudiosession CategoryOptions 不是一个解决方案。
为了支持后台模式,请将以下内容添加到您的
Info.plist
文件中
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
支持版本:swift-tools-version:5.0
// Package.swift
import PackageDescription
let package = Package(
name: "Sample",
dependencies: [
.package(url: "https://github.com/noreasonprojects/ModernAVPlayer", from: "X.X.X")
],
targets: [
.target(name: "Sample", dependencies: ["ModernAVPlayer"])
]
)
CocoaPods 是 Cocoa 项目的依赖管理工具。您可以使用以下命令安装它
$ gem install cocoapods
构建 ModernAVPlayer 需要 CocoaPods 1.3+ 版本。
要使用 CocoaPods 将 ModernAVPlayer
集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'ModernAVPlayer'
end
然后,运行以下命令
$ pod install
从 URL 创建媒体
let media = ModernAVPlayerMedia(url: URL, type: MediaType)
从 AVPlayerItem 创建媒体
let media = ModernAVPlayerMediaItem(item: AVPlayerItem, type: MediaType, metadata: PlayerMediaMetadata)
实例化包装器
let player = ModernAVPlayer()
加载并播放媒体
player.load(media: media, autostart: true)
循环播放跟踪
player.loopMode = true
↓ 状态 / 命令 → | loadMedia | 播放 | 暂停 | 停止 | seek |
---|---|---|---|---|---|
初始化 | O | X | O | O | X |
加载中 | O | X | O | O | X |
已加载 | O | O | O | O | O |
缓冲中 | O | X | O | O | O |
播放中 | O | X | O | O | O |
已暂停 | O | O | X | O | O |
已停止 | O | O | O | X | O |
等待网络 | O | X | O | O | X |
失败 | O | O | X | X | X |
所有播放器配置都可通过 PlayerConfiguration
协议获得。
默认实现 ModernAVPlayerConfiguration
随文档提供
如果使用默认配置文件(`swift useDefaultRemoteCommand = true`),ModernAVPlayer 将**自动**使用 ModernAVPlayerRemoteCommandFactory
类创建的所有命令。文档请参考 ModernAVPlayerRemoteCommandFactory.swift
文件
使用您自己的
PlayerConfiguration
实现,通过
...
useDefaultRemoteCommand = false
...
创建一个符合
ModernAVPlayerRemoteCommand
协议的命令数组。
let player = ModernAVPlayer(config: YourConfigImplementation())
let commands: [ModernAVPlayerRemoteCommand] = YourRemoteCommandFactory.commands
player.remoteCommands = commands
您可以使用来自公共 ModernAVPlayerRemoteCommandFactory
类的现有命令。
使用 PlayerPlugin
协议来创建您自己的插件系统,例如跟踪插件。
除了使用委托模式,您还可以使用 Rx 来绑定播放器属性。
设置
在 Podfile 中使用 pod 'ModernAVPlayer/RxSwift'
用法
let player = ModernAVPlayer()
let state: Observable<ModernAVPlayer.State> = player.rx.state
Simple Audio
模板创建一个 pull request 来演示。