快直播 iOS SDK
最近更新时间: 2025-07-09 15:48:32
概述
七牛快直播(miku fast live)构建了全新的快直播互动体验,相比于传统的直播能力降低了延时、优化了协议与底层技术,目前对于微信内直播多业务场景提供了更为优渥的使用体验。支持千万级并发同时拥有毫秒级开播体验,打通了用户对于直播低延时性的核心诉求。
- 优势:采用 RTC 相关技术,播放延迟小于 1 秒,适用于大部分对延迟有要求的直播场景
- 拉流协议支持:支持 WHEP 协议和源站在 Miku 直播的 FLV / RTMP / HLS 协议。建议优先使用 WHEP 协议,效果最佳。不过,值得注意的是,所有协议底层都是通过 RTC 进行播放的
功能特性
- 支持 H.264 视频解码
- 支持 Opus 音频解码
- 支持 HeaderDoc 文档
- 支持 ARM64, x86_64 架构
- 支持纯音频或纯视频播放
- 支持自定义音视频处理
- 支持苹果 ATS 安全标准
- 支持 WHEP 协议拉流
- 支持画中画播放
系统要求
- iOS Target : >= iOS 12
- iOS Device : >= iPhone 5s
安装方法
CocoaPods 是针对 Objective-C 的依赖管理工具,它能够将使用类似 QNRTPlayerKit 的第三方库的安装过程变得非常简单和自动化,你能够用下面的命令来安装它:
Podfile
为了使用 CoacoaPods 集成 QNRTPlayerKit 到你的 Xcode 工程当中,你需要编写你的 Podfile
- 默认为真机版
- 若需要使用模拟器 + 真机版,则改用如下配置
注意:鉴于目前 iOS 上架,只支持动态库真机,请在 App 上架前,更换至真机版本
然后,运行如下的命令:
反馈及意见
当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 issues 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 Labels 中指明类型为 bug 或者其他。
通过这里查看已有的 issues 和提交 Bug。
API参考
QNRTPlayer
QNRTPlayer
为建立音视频播放的核心类,包含播放、停止,静音等接口。
属性
playState
定义
说明:播放的状态,当播放状态变更时会通过 - (void)RTPlayer:(QNRTPlayer *)player playStateDidChange:(QNRTPlayState)playState;
方法回调。
delegate
定义
说明:状态回调的 delegate。
isPlaying
定义
说明:是否在播放状态
playUrl
定义
说明:播放的 URL
statisticInterval
定义
说明:统计信息回调的时间间隔,单位为秒。默认为 0,即默认不会回调统计信息。
volume
定义
说明:播放音量
width
定义
说明:视频的宽
height
定义
说明:视频的高
playView
定义
说明:渲染播放画面
方法
playWithUrl:supportHttps:
定义
参数
参数名 |
描述 |
url |
需要播放的 url ,目前支持rtmp、hls、hdl和webrtc (url 以 webrtc:// 开头) 协议 |
isSupport |
当前播放 URL 是否支持 SSL 证书,默认为 NO |
说明:开始播放新的 url
注意: 1. 当前 iOS 系统网络限制,默认不支持 http 带域名访问,需要支持 SSL,且 isSupport 为 YES,或者开启 ATS 支持 HTTP 带域名访问,即可正常播放。 2. 播放域名需在七牛配置并完成解析,如播放失败请联系我们处理。
stop
定义
说明:停止播放
muteAudio:
定义
参数
说明:静音
muteVideo:
定义
参数
说明:停止画面渲染
setSpeakerOn:
定义
参数
说明:是否将声音从扬声器输出
注意:默认值为 NO,传入 YES 时,会强制声音从扬声器输出。另外,由于系统原因,在某些设备(如 iPhone XS Max、iPhone 8 Plus)上,连接 AirPods 后无法通过该接口将声音强制设为扬声器输出。如有需求,可以通过使用 AVRoutePickerView 来切换。
takeScreenshotCallback:
定义
参数
参数名 |
描述 |
resultCallback |
截图的结果回调 |
说明:截图播放画面
注意:成功则回调图片,失败则回调错误。拉到首帧之后才可正常截图。
setJitterBufferMinDelay:
定义
参数
参数名 |
描述 |
jitterBufferMinDelay |
抖动缓冲区最小延迟 |
说明:设置抖动缓冲区的最小延迟
注意:默认为 0,不开启抖动延迟,时间单位为秒,范围 [0, 1],建议不超过 600ms。
enableFileLogging
定义
说明:开启文件日志,建议在 App 启动时即开启,日志文件位于 App App Container/Library/Caches/Pili/RTLogs 目录下以 QNRTPlayer+当前时间命名的目录内
注意:文件日志功能主要用于排查问题,打开文件日志功能会对性能有一定影响,上线前请记得关闭文件日志功能!
versionInfo
定义
说明:获取 SDK 的版本信息。
isSupportPictureInPicture
定义
说明:判断设备是否支持画中画功能 (iOS >= 14.0、iPad >= 9.0 )
startPictureInPicture
定义
说明:开启画中画
stopPictureInPicture
定义
说明:关闭画中画
setPictureInPictureType
定义
说明:设置画中画样式,默认 QNRTVideoPictureInPicturePortrait
QNRTPlayerDelegate
QNRTPlayerDelegate
在 QNRTPlayer 运行过程中的状态和事件回调
方法
RTPlayer:didFailWithError:
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
error |
错误内容 |
说明:运行过程中发生错误会通过该方法回调
RTPlayer:playStateDidChange:
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
playState |
playState 播放状态 |
说明:在运行过程中,状态发生变化的回调
RTPlayer:didGetStatistic:
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
statistic |
统计信息 ,包括:音频码率,视频码率,视频帧率 |
说明:统计信息回调,回调的时间间隔由 statisticInterval 参数决定,statisticInterval 默认为 0,即不回调统计信息。
RTPlayer:trackDidReceived
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
kind |
数据类型 |
说明:当前流媒体流收到数据 track。
RTCEngine:firstSourceDidDecode:
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
kind |
数据类型 |
说明:音视频首帧解码后的回调。
RTPlayer: didStartPictureInPicture:
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
pictureInPictureController |
画中画控制器 |
说明:画中画功能开启后的回调。
RTPlayer:didStopPictureInPicture:;
定义
参数
参数名 |
描述 |
player |
QNRTPlayer 实例 |
pictureInPictureController |
画中画控制器 |
说明:画中画功能关闭后的回调。
QNRTErrorDomain
QNRTErrorDomain
定义了播放过程中的错误信息,包括但不限于连接错误、鉴权失败等错误信息。
QNRTCErrorDomain |
错误码 |
功能 |
QNRTErrorNetworkError |
20001 |
服务请求超时,或者域名解析错误等 |
QNRTErrorAuthFailed |
20002 |
请求服务鉴权失败 |
QNRTErrorPlayStreamNotExit |
20003 |
播放流地址不存在 |
QNRTErrorPlayRequestFailed |
20004 |
对应服务 invalid parameter / server error |
QNRTErrorDescriptionError |
20005 |
内部sdp错误 |
QNRTErrorConnectFailed |
20006 |
连接异常 |
QNRTErrorOperationNotAllowed |
20007 |
操作不被允许 |
QNRTPlayState
QNRTPlayState
定义了播放的状态。
QNRTPlayState |
功能 |
QNRTPlayStateUnknow |
未知状态,只会作为 init 前的初始状态,开始播放之后任何情况下都不会再回到此状态 |
QNRTPlayStateInit |
初始状态 |
QNRTPlayStateReady |
准备播放的状态 |
QNRTPlayStatePlaying |
正在播放的状态 |
QNRTPlayStateStoped |
停止播放的状态 |
QNRTPlayStateError |
播放发生错误的状态 |
QNRTSourceKind
QNRTSourceKind
定义了 source 的类型。
QNRTSourceKind |
功能 |
QNRTSourceKindAudio |
音频 |
QNRTSourceKindVideo |
视频 |
QNRTVideoFillModeType
QNRTVideoFillModeType
定义了视频填充模式。
QNRTVideoFillModeType |
功能 |
QNRTVideoFillModeStretch |
拉伸以填充整个视图 |
QNRTVideoFillModePreserveAspectRatio |
画面均匀缩放的同时保持宽高比,添加指定背景色的条形 |
QNRTVideoFillModePreserveAspectRatioAndFill |
保持源图像的长宽比,放大其中心以填充视图 |
QNScreenshotResultCallback
QNScreenshotResultCallback
定义了截图的回调。