ModernAVPlayer 1.7.3

ModernAVPlayer 1.7.3

Raphael Ankierman 维护。



  • raphael ankierman

ModernAVPlayer

Swift 4.2 Build Status CocoaPods CocoaPods

ModernAVPlayer 是一个持久性的 AVPlayer 包装器

++ 亮点特性 ++

  • 获取 9 个优秀且相关的播放状态(播放中、缓冲、加载、加载完成...)
  • 在后台模式下,即使在网络连接不良的情况下也能持久化播放器以恢复播放
  • 管理耳机交互、电话与 Siri 打断、现在播放信息
  • 添加您自己的插件以管理跟踪、事件...
  • RxSwift 兼容
  • 循环模式
  • 按域名提供日志

已知问题

  • 音频未由其他音频源停止,AVAudiosession.CategoryOptions 设置为 mixWithOther,但可以进行更改:[参考](https://github.com/noreasonprojects/ModernAVPlayer/issues/174)

菜单

需求

  • iOS 10.0+
  • tvOS 10.0+

为了支持后台模式,请将以下内容添加到您的 Info.plist 文件中

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

安装

Swift 包管理器

支持版本: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

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 play pause stop seek
Init O X O O X
Loading O X O O X
Loaded O O O O O
Buffering O X O O O
Playing O X O O O
Paused O O X O O
Stopped O O O X O
WaitingNetwork O X O O X
Failed 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 协议来创建你自己的插件系统,如跟踪插件。


RxSwift

您可以使用 Rx 绑定玩家属性,而不是使用代理模式。

设置

在 Podfile 中使用 pod 'ModernAVPlayer/RxSwift'

用法

let player = ModernAVPlayer()
let state: Observable<ModernAVPlayer.State> = player.rx.state

通讯

  • 如果您发现了错误,请在示例部分使用Simple Audio模板提交一个Pull Request来演示。
  • 如果您有功能需求,请创建一个Issue。
  • 如果您希望贡献,请提交一个Pull Request。