tencent cloud

直播 SDK

AtomicPusher

下载
聚焦模式
字号
最后更新时间: 2026-11-02 17:31:51

简介

典型使用流程:通过 AtomicPusher.shared.setView(view) 绑定本地预览视图,调用 startPush(config) 开始推流,监听 state 获取推流状态变化,并通过 release() 释放资源。

功能特性

PusherState:实时推流状态,包含连接状态、统计信息、直播间信息等。
PusherEvent:推流事件回调,包含错误、直播结束、被踢出等事件类型。

可订阅数据

PusherState 的字段描述如下:
属性名
类型
描述
networkState
连接状态。
statistics
推流器运行时统计。
pusherInfo
推流器直播间信息。
totalViewerCount
Int
总观众数。

API 列表

函数名
描述
shared
获取全局单例。
推流事件发布者。
setView
设置渲染视图。
startPush
开始推流(直播)。
stopPush
停止推流(直播)。
更新直播间配置。
release
释放推流器资源。
通过键值对启用高级特性。

获取实例

shared

获取全局单例。

观察状态和事件

pusherEvent

推流事件发布者。

视图管理

setView

设置渲染视图。本地采集的视频帧将渲染到给定的 AtomicLiveView 容器中。
public func setView(_ view: AtomicLiveView) {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
view
渲染视图容器。

推流控制

startPush

开始推流(直播)。传入直播间配置,SDK 将据此创建推流链路。
public func startPush(config: PusherInfo) {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
config
直播间配置。

stopPush

停止推流(直播)。
public func stopPush() {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。

updateConfig

更新直播间配置。在 startPush 之后调用,更新直播间名称、封面、分类等信息。
public func updateConfig(config: PusherInfo, modifyFlag: PusherInfo.ModifyFlag) {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
config
更新后的配置。
modifyFlag
PusherInfo.ModifyFlag
修改标志。

release

主动释放推流器。调用后所有 API 变为空操作,内部持有的底层资源、状态和事件订阅将被清理。
public func release() {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。

高级功能

enableAdvancedFeature

通过键值对启用高级特性。支持的键取决于底层原生推流器能力,可能随版本演进。
public func enableAdvancedFeature(key: String, value: Any) {
fatalError("\\(#function) must be overridden by subclass")
}
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
key
String
特性键名。
value
Any
特性值,类型取决于具体键。

数据结构

PusherCode

推流错误码枚举,用于上报推流操作结果和运行时错误。
枚举值
值
说明
OK
0
无错误,操作成功。
ERROR_INVALID_PARAMETER
-1
参数非法。
ERROR_INVALID_STATE
-2
当前状态不允许该操作(如正在推流时重复开播、未开播就修改配置)。
ERROR_START_PUSH_REQUEST_FAILED
-3
开播请求链路失败(服务端 / 信令 / TRTC)。
ERROR_UPDATE_CONFIG_REQUEST_FAILED
-4
更新配置请求链路失败(服务端 / 信令)。

PusherConnectState

推流器与推流目标之间的连接状态。 状态机(典型迁移):
startPush
DISCONNECTED ─────────────▶ CONNECTING
▲ │
│ │ join/push succeeded
│ ▼
│ CONNECTED
│ │
│ network jitter / dropped, SDK auto-reconnects
│ ▼
│ CONNECTING
│ │
│ reconnect succeeded ─▶ CONNECTED
└───── reconnect failed / stopPush / release
说明:
DISCONNECTED 为初始状态;调用 stopPush / release 后也会回到该状态。 自动重连过程复用 CONNECTING,不区分“首次连接”与“重连”。
枚举值
值
说明
DISCONNECTED
0
未连接。初始状态,或主动停止推流 / 最终重连失败后。
CONNECTING
1
连接中。用于首次进房握手和断线后自动重连。
CONNECTED
2
已连接,推流链路正常。

PusherListener

推流事件监听器,用于接收推流错误、直播结束、被踢出等一次性事件。通过 addListener / removeListener 注册/移除监听器。

PusherStatistics

推流器运行时统计信息。
属性
类型
说明
videoWidth
Int
视频宽度(像素)。
videoHeight
Int
视频高度(像素)。
videoFps
Int
视频帧率(fps)。
videoBitrate
Int
视频码率(bps)。
audioBitrate
Int
音频码率(bps)。
rtt
Int
网络往返时延(毫秒)。
packetLossRate
Int
网络丢包率(百分比)。

PusherState

推流器响应式状态,携带 AtomicPusher 的状态。可通过 state 读取当前值或观察变化。
属性
类型
说明
networkState
连接状态。
statistics
推流器运行时统计。
pusherInfo
推流器直播间信息。
totalViewerCount
Int
总观众数。

PusherInfo

推流器直播间信息。既作为 startPush / updateConfig 的输入参数,也在 state.pusherInfo 中携带引擎返回的直播间状态。
属性
类型
说明
liveID
String
直播 ID。
liveName
String
直播名称。
coverURL
String
封面 URL。
backgroundURL
String
背景 URL。
notice
String
公告。
createTime
Int
创建时间。
categoryList
[Int]
分类列表。
isPublicVisible
Bool
是否公开可见。
metaData
[String: String]
自定义元数据。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈