自定义视频采集和渲染
createCustomVideoTrack
创建一个自定义的视频轨道。
- (unsigned int)createCustomVideoTrack;
当你需要在频道中发布多路自定义采集视频时,可参考以下步骤:
-
调用该方法创建视频轨道并获得视频轨道 ID。
-
在每个频道的
AgoraRtcChannelMediaOptions中,将customVideoTrackId参数设置为你想要发布的视频轨道 ID,并将publishCustomVideoTrack设置为YES。 -
调用
pushExternalVideoFrame将videoTrackId指定为步骤 2 中指定的视频轨道 ID,即可实现在多个频道中发布对应的自定义视频源。
返回值
-
方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
-
方法调用失败,返回负值。
destroyCustomVideoTrack
销毁指定的视频轨道。
- (int)destroyCustomVideoTrack:(NSUInteger)videoTrackId;
参数
| 参数名 | 描述 |
|---|---|
position | 调用 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码了解详情和解决建议。
pushExternalVideoFrame
推送外部原始视频帧到 SDK。
- (BOOL)pushExternalVideoFrame:(AgoraVideoFrame * _Nonnull)frame;
调用 setExternalVideoSource 方法,设置 enabled 参数为 YES、encodedFrame 参数为 NO 后,你可以调用本方法将未编码的外部视频帧推送到 SDK。
参数
| 参数名 | 描述 |
|---|---|
frame | 待推送的视频帧。详见 |
返回值
-
YES:推送成功。 -
NO:推送失败。
pushExternalVideoFrame
推送外部原始视频帧到 SDK。
- (BOOL)pushExternalVideoFrame:(AgoraVideoFrame * _Nonnull)frame videoTrackId:(NSUInteger)videoTrackId;
该方法主动将视频帧数据用 AgoraOutputVideoFrame 类封装后传递给 SDK。请确保在你调用本方法前已调用 createCustomVideoTrack 获得视频轨道 ID。
参数
| 参数名 | 描述 |
|---|---|
frame | 待推送的视频帧。详见 |
videoTrackId | 调用 |
返回值
-
YES:推送成功。 -
NO:推送失败。
setExternalVideoSource
设置外部视频源。
- (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture sourceType:(AgoraExternalVideoSourceType)sourceType;
注意: 请在加入频道前调用该方法。
参数
| 参数名 | 描述 |
|---|---|
enable | 是否启用外部视频源:
|
useTexture | 是否使用 texture 格式的外部视频帧:
|
sourceType | 外部视频帧是否编码,详见 |