自定义视频采集和渲染
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 | 外部视频帧是否编码,详见 |