Skip to content

Web API 说明

本页介绍 TiRTC Web SDK 的 API,帮助你在网页中接入并播放设备的实时音视频。

如果你还没有完成前置接入,先看 Web SDK 接入音视频流传输与播放。页面里提到的 AppIdremote_idtokenstream_id 等术语,以 名词解释 为准。当前 Web 示例里,connect({ deviceId }) 里的 deviceId 在常见设备连接场景下,就对应目标设备的 remote_id / device_id

对象总览

对象作用结束方式
TiRtcInitOptions组织 SDK 初始化参数无需显式清理
TiRtc初始化 SDK,等待视频播放依赖准备完成无显式关闭 API
TiRtcConn连接设备、断开连接、手动订阅媒体流disconnect()
TiRtcAudioOutput播放一条远端音频流detach()
TiRtcAudioInput采集本地麦克风并发送给远端设备stop() + detach()
TiRtcVideoOutput播放一条远端视频流detach()

TiRtcInitOptions

TiRtc.initialize(...) 的参数对象。

字段说明
appId你的 AppId。建议传非空字符串。
endpoint自定义服务入口。留空时使用 SDK 当前默认入口。

示例:

js
const options = TiRtcInitOptions({
  appId: 'your-app-id', // 必填:你的 AppId
  endpoint: '', // 自定义服务入口;一般保持空字符串
});

TiRtc

TiRtc 管理 Web SDK 的初始化和视频播放前置准备。典型调用顺序是:initialize() -> videoOutputReady() -> 创建连接和播放对象 -> 业务结束后断开连接并 detach()

API说明
initialize(options): void初始化 SDK 运行环境。调用后才能继续使用连接对象和播放对象。
videoOutputReady(): Promise<void>等待视频解码和渲染依赖准备完成。建议在创建视频播放链路前先 await 它。

示例:

js
TiRtc.initialize(TiRtcInitOptions({ appId: 'your-app-id' }));
await TiRtc.videoOutputReady();

TiRtcConn

本节所有 streamId 参数按 stream_id 的公开约定使用 0..15。当前公开示例默认使用音频 10、视频 11

方法

API说明
TiRtcConn()创建一个连接对象。它本身不会自动发起建连。
connect({ deviceId, token }): Promise<void>发起到目标设备的连接。deviceId 是目标设备 ID;常见场景下,它就是 remote_id。连接成功时 Promise resolve,失败时 Promise reject。
disconnect(): void断开当前连接,但不会自动 detach() 已创建的音频或视频输出对象。
subscribeAudio({ streamId }): void请求远端开始发送指定 streamId 的音频流。它不会自动创建本地播放。
unsubscribeAudio({ streamId }): void取消指定 streamId 的音频订阅。它不等于 TiRtcAudioOutput.detach()
subscribeVideo({ streamId }): void请求远端开始发送指定 streamId 的视频流。它不会自动创建本地播放。
unsubscribeVideo({ streamId }): void取消指定 streamId 的视频订阅。它不等于 TiRtcVideoOutput.detach()
requestKeyFrame({ streamId }): void向指定远端视频流请求关键帧。

TiRtcAudioOutput

TiRtcAudioOutput({ connection, streamId }) 创建一个音频输出对象。

参数说明
connection要绑定的 TiRtcConn
streamId目标音频流编号,取值范围同上
API说明
attach(): void开始接收并播放当前绑定的远端音频流。它只决定本地播放哪一路音频;如果远端按订阅后才发流,还要配合 connection.subscribeAudio()
detach(): void解除当前音频播放绑定。对象本身仍可继续复用。

示例:

js
const audioOutput = TiRtcAudioOutput({
  connection,
  streamId: 10,
});

TiRtcAudioInput

TiRtcAudioInput({ connection, streamId }) 创建一个语音输入对象,用来采集本地麦克风并发送给远端设备,常见用途是语音对讲。

参数说明
connection要绑定的 TiRtcConn;也可以在 attach() 时传入
streamId本地音频发送流编号,取值范围同上;对讲示例默认使用 14
API说明
setOptions({ sampleRate }): object设置采集参数。sampleRate 表示麦克风采样率,默认 8000。建议在 start() 前调用。
attach({ connection, streamId }): Promise<number>绑定连接和发送流编号。构造时如果已经传入 connectionstreamId,这里可以直接无参调用。
start(): Promise<void>打开麦克风并开始采集音频。建议在点击按钮等用户操作流里调用,以便浏览器能正常申请麦克风权限。
stop(): void停止采集音频。
detach(): Promise<number>解除当前发送绑定。

示例:

js
const audioInput = TiRtcAudioInput({
  connection,
  streamId: 14,
});

audioInput.setOptions({ sampleRate: 8000 });

await audioInput.start();
await audioInput.attach();

TiRtcVideoOutput

TiRtcVideoOutput({ connection, streamId }) 创建一个视频输出对象。

参数说明
connection要绑定的 TiRtcConn
streamId目标视频流编号,取值范围同上
API说明
attach(): void开始接收并渲染当前绑定的远端视频流。它只决定本地播放哪一路视频;如果远端按订阅后才发流,还要配合 connection.subscribeVideo()
detach(): void解除当前视频播放绑定。对象本身仍可继续复用。

当前版本没有单独的 view() 或容器绑定 API。页面里需要先准备一个固定的 canvas 节点:

html
<canvas id="canvas"></canvas>

示例:

js
const videoOutput = TiRtcVideoOutput({
  connection,
  streamId: 11,
});

常见误用

  • 没有先调用 TiRtc.initialize(...),就直接创建 TiRtcConn 或播放对象。
  • 没有先等待 TiRtc.videoOutputReady(),导致视频依赖还没准备好。
  • 页面里没有准备固定 id="canvas"canvas 节点。
  • 还没连上设备就执行 attach()subscribe*()
  • 只做了 attach(),没有按约定配合 subscribeAudio() / subscribeVideo(),结果一直无声或黑屏。
  • attach() 当成向远端发起订阅;实际上它只负责本地播放绑定。
  • 音频和视频使用了和设备侧约定不一致的 streamId
  • 没有在点击按钮等用户操作流里调用 TiRtcAudioInput.start(),导致浏览器拒绝麦克风权限。
  • 业务结束后只调用 disconnect(),没有对音频和视频输出分别执行 detach()

相关文档

TiRTC 开发文档