自定义视频采集和渲染

  • iOS

更新时间不可用

createCustomVideoTrack

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

Objective-C
- (unsigned int)createCustomVideoTrack NS_SWIFT_NAME(createCustomVideoTrack());

要发布自定义视频源,请按照以下步骤操作:

  1. 调用该方法创建一个视频轨道,并获取视频轨道 ID。
  2. 调用 joinChannelByToken 加入频道。在 AgoraRtcChannelMediaOptions 中,将 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为 YES。
  3. 调用 pushExternalVideoFrame,并将 videoTrackId 设置为第 2 步中设置的视频轨道 ID,即可在频道中发布对应的自定义视频源。

返回值

  • 方法调用成功时,返回视频轨道 ID,作为该视频轨道的唯一标识符。
  • 方法调用失败时,返回 0xffffffff。

所属接口类

destroyCustomVideoTrack:

销毁指定的视频轨道。

Objective-C
- (int)destroyCustomVideoTrack:(NSUInteger)videoTrackId NS_SWIFT_NAME(destroyCustomVideoTrack(_:));

参数

参数名描述
videoTrackId

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

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

返回值

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

所属接口类

pushExternalVideoFrame:videoTrackId:

通过视频轨道将外部原始视频帧推送到 SDK。

Objective-C
- (BOOL)pushExternalVideoFrame:(AgoraVideoFrame * _Nonnull)frame videoTrackId:(NSUInteger)videoTrackId NS_SWIFT_NAME(pushExternalVideoFrame(_:videoTrackId:));

要发布自定义视频源,请按照以下步骤操作:

  1. 调用 createCustomVideoTrack 创建视频轨道并获取视频轨道 ID。
  2. 调用 joinChannelByToken 加入频道。在 AgoraRtcChannelMediaOptions 中,将 customVideoTrackId 设置为要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为 YES。
  3. 调用 pushExternalVideoFrame:videoTrackId: 方法,并将 videoTrackId 指定为第 2 步中设置的视频轨道 ID,即可在频道中发布相应的自定义视频源。

参数

参数名描述
frame

要推送的外部原始视频帧。详见 AgoraVideoFrame。

videoTrackId

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

  • 如果你只需推送一个自定义视频源,请将该参数设置为 0。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • YES:推送外部视频帧成功。
  • NO:推送外部视频帧失败。

所属接口类

pushExternalVideoFrame:

将外部原始视频帧推送到 SDK。

Objective-C
- (BOOL)pushExternalVideoFrame:(AgoraVideoFrame * _Nonnull)frame NS_SWIFT_NAME(pushExternalVideoFrame(_:)) __deprecated_msg("use pushExternalVideoFrame:frame,videoTrackId options instead.");

废弃

该方法已废弃,请改用 pushExternalVideoFrame:frame,videoTrackId。

调用 setExternalVideoSource:useTexture:sourceType: 方法,并将 enabled 参数设置为 YES,encodedFrame 参数设置为 NO 后,可以调用该方法将外部原始视频帧推送到 SDK。

参数

参数名描述
frame

要推送的外部原始视频帧。详见 AgoraVideoFrame。

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

返回值

  • YES:方法调用成功。
  • NO:方法调用失败。

所属接口类

setExternalVideoSource:useTexture:sourceType:

配置外部视频源。

Objective-C
- (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture sourceType:(AgoraExternalVideoSourceType)sourceType NS_SWIFT_NAME(setExternalVideoSource(_:useTexture:sourceType:));

调用该方法启用外部视频源后,可以调用 pushExternalVideoFrame:videoTrackId: 方法将外部视频数据推送到 SDK。

注: 频道内不支持动态切换视频源。如需从外部视频源切换为内部视频源,必须先离开频道,调用该方法关闭外部视频源,再重新加入频道。

调用时机

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

参数

参数名描述
enable

是否使用外部视频源:

  • YES:使用外部视频源,SDK 准备接收外部视频帧。
  • NO:(默认)不使用外部视频源。
useTexture

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

  • YES:使用 Texture 格式的外部视频帧。
  • NO:(默认)不使用 Texture 格式的外部视频帧。
sourceType

外部视频帧的类型,详见 AgoraExternalVideoSourceType。

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

所属接口类