自定义视频采集和渲染

  • React Native

更新时间不可用

createCustomVideoTrack

创建一个自定义的视频轨道。

TypeScript
abstract createCustomVideoTrack(): number;

当你需要在频道中发布自定义采集视频时,可参考以下步骤:

  1. 调用该方法创建视频轨道并获得视频轨道 ID。
  2. 调用 joinChannel 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为 true。
  3. 调用 pushVideoFrame 将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。

返回值

  • 方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
  • 方法调用失败,返回 0xffffffff。详见错误码了解详情和解决建议。

所属接口类

destroyCustomVideoTrack

销毁指定的视频轨道。

TypeScript
abstract destroyCustomVideoTrack(videoTrackId: number): number;

参数

参数名描述
videoTrackId

调用 createCustomVideoTrack 方法返回的视频轨道 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

isPipActivated

检查画中画模式是否已激活。

TypeScript
abstract isPipActivated(): boolean;

自从

自 v4.6.2 版本新增。

返回值

  • true:画中画模式已激活。
  • false:画中画模式未激活。

所属接口类

pipDispose

释放画中画相关的资源。

TypeScript
abstract pipDispose(): void;

自从

自 v4.6.2 版本新增。

所属接口类

pipIsAutoEnterSupported

检查是否支持自动进入画中画模式。

TypeScript
abstract pipIsAutoEnterSupported(): boolean;

自从

自 v4.6.2 版本新增。

返回值

  • true:支持自动进入画中画模式。
  • false:不支持自动进入画中画模式。

所属接口类

pipIsSupported

检查当前设备是否支持画中画模式。

TypeScript
abstract pipIsSupported(): boolean;

自从

自 v4.6.2 版本新增。

返回值

  • true:当前设备支持画中画模式。
  • false:当前设备不支持画中画模式。

所属接口类

pipSetup

配置画中画模式。

TypeScript
abstract pipSetup(options: AgoraPipOptions): boolean;

自从

自 v4.6.2 版本新增。

参数

参数名描述
options

画中画配置选项,详见 AgoraPipOptions。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • true:方法调用成功。
  • false:方法调用失败。

所属接口类

pipStart

启动画中画模式。

TypeScript
abstract pipStart(): boolean;

自从

自 v4.6.2 版本新增。

返回值

  • true:方法调用成功。
  • false:方法调用失败。

所属接口类

pipStop

停止画中画模式。

TypeScript
abstract pipStop(): void;

自从

自 v4.6.2 版本新增。

所属接口类

pushVideoFrame

将外部原始视频帧通过自定义视频轨道发布到频道中。

TypeScript
abstract pushVideoFrame(
    frame: ExternalVideoFrame,
    videoTrackId?: number
  ): number;

当你需要在频道中发布自定义采集视频时,可参考以下步骤:

  1. 调用 createCustomVideoTrack 方法创建视频轨道并获得视频轨道 ID。
  2. 调用 joinChannel 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为 true。
  3. 调用该方法将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。

注: 调用该方法后,即使你停止推送外部视频帧到 SDK,自定义采集的视频流仍然会被计入视频时长用量并产生费用,声网建议你根据实际情况采取相应措施避免此类视频计费:

  • 如果你不再需要采集外部视频数据,可以调用 destroyCustomVideoTrack 销毁自定义采集的视频轨道。
  • 如果你只想将采集到的外部视频数据用于本地预览、而不在频道内发布,可以调用 muteLocalVideoStream 取消发送视频流,或调用 updateChannelMediaOptions 将 publishCustomVideoTrack 设置为 false。

参数

参数名描述
frame

待推送的视频帧。详见 ExternalVideoFrame。

videoTrackId

调用 createCustomVideoTrack 方法返回的视频轨道 ID。

注: 如果你只需推送一路外部视频流,videoTrackId 设置为 0 即可。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

registerPipStateChangedObserver

注册画中画状态改变观测器。

TypeScript
abstract registerPipStateChangedObserver(observer: AgoraPipStateChangedObserver): void;

参数

参数名描述
observer

画中画状态改变观测器,详见 AgoraPipStateChangedObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

release

释放画中画相关的资源。

TypeScript
abstract release(): void;

自从

自 v4.6.2 版本新增。

所属接口类

setExternalRemoteEglContext

设置远端视频流渲染的 EGL 环境上下文。

TypeScript
abstract setExternalRemoteEglContext(eglContext: any): number;

通过设置该方法,开发者可以替换 SDK 内部默认的远端 EGL 环境上下文,便于实现统一的 EGL 上下文管理。 引擎销毁时,SDK 会自动释放 EGL 环境上下文。

注: 该方法仅适用于 Android。

适用场景

该方法适用于使用 Texture 格式的视频数据进行远端视频自渲染的场景。

调用时机

该方法需要在加入频道前调用。

参数

参数名描述
eglContext

用于远端视频流渲染的 EGL 环境上下文对象。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setExternalVideoSource

设置外部视频源。

TypeScript
abstract setExternalVideoSource(
    enabled: boolean,
    useTexture: boolean,
    sourceType?: ExternalVideoSourceType,
    encodedVideoOption?: SenderOptions
  ): number;

调用该方法启用外部视频源后,你可以调用 pushVideoFrame 向 SDK 推送外部视频数据。

注: 不支持在频道内动态切换视频源。如果已调用该方法启用外部视频源并加入频道,若想切换为内部视频源,必须先退出频道,然后调用该方法关闭外部视频源,再重新加入频道。

调用时机

该方法需要在加入频道前调用。

参数

参数名描述
enabled

是否启用外部视频源:

  • true: 启用外部视频源。SDK 准备接收外部视频帧。
  • false:(默认)不启用外部视频源。
useTexture

是否使用 Texture 格式的外部视频帧:

  • true: 使用 Texture 格式的外部视频帧。
  • false: 不使用 Texture 格式的外部视频帧。
sourceType

外部视频帧是否编码,详见 ExternalVideoSourceType。

encodedVideoOption

视频编码选项。如果 sourceType 为 EncodedVideoFrame,则需要设置该参数。你可以联系技术支持了解如何设置该参数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

unregisterPipStateChangedObserver

取消注册画中画状态改变观测器。

TypeScript
abstract unregisterPipStateChangedObserver(observer: AgoraPipStateChangedObserver): void;

参数

参数名描述
observer

画中画状态改变观测器,详见 AgoraPipStateChangedObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPipStateChanged

画中画状态改变回调。

TypeScript
onPipStateChanged: (state: AgoraPipState, error: string | null) => void;

自从

自 v4.6.2 版本新增。

当画中画状态发生改变时,SDK 会触发此回调。

参数

参数名描述
state

新的画中画状态,详见 AgoraPipState。

error

如果状态改变失败,返回错误信息;否则返回 null。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类