自定义视频采集和渲染
createCustomVideoTrack
创建一个自定义的视频轨道。
virtual video_track_id_t createCustomVideoTrack() = 0;
当你需要在频道中发布多路自定义采集视频时,可参考以下步骤:
-
调用该方法创建视频轨道并获得视频轨道 ID。
-
在每个频道的
ChannelMediaOptions
中,将customVideoTrackId
参数设置为你想要发布的视频轨道 ID,并将publishCustomVideoTrack
设置为true
。 -
调用
pushVideoFrame
将videoTrackId
指定为步骤 2 中指定的视频轨道 ID,即可实现在多个频道中发布对应的自定义视频源。
返回值
-
方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
-
方法调用失败,返回负值。
destroyCustomVideoTrack
销毁指定的视频轨道。
virtual int destroyCustomVideoTrack(video_track_id_t video_track_id) = 0;
参数
参数名 | 描述 |
---|---|
video_track_id | 调用 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
pushVideoFrame
推送外部原始视频帧到 SDK。
virtual int pushVideoFrame(base::ExternalVideoFrame* frame, unsigned int videoTrackId = 0) = 0;
调用 createCustomVideoTrack
方法获得视频轨道 ID,在每个频道的 ChannelMediaOptions
中,将 customVideoTrackId
参数设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack
设置为 true
后,你可以调用本方法将未编码的外部视频帧推送到 SDK。
参数
参数名 | 描述 |
---|---|
frame | 待推送的视频帧。详见 |
videoTrackId | 调用 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
setExternalVideoSource
设置外部视频源。
virtual int setExternalVideoSource(
bool enabled, bool useTexture, EXTERNAL_VIDEO_SOURCE_TYPE sourceType = VIDEO_FRAME,
rtc::SenderOptions encodedVideoOption = rtc::SenderOptions()) = 0;
注意: 请在加入频道前调用该方法。
参数
参数名 | 描述 |
---|---|
enabled | 是否启用外部视频源:
|
useTexture | 是否使用 texture 格式的外部视频帧:
|
sourceType | 外部视频帧是否编码,详见 |
encodedVideoOption | 视频编码选项。如果 |
返回值
-
0:方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。