自定义视频采集和渲染
createCustomVideoTrack
创建一个自定义的视频轨道。
public abstract int createCustomVideoTrack();
当你需要在频道中发布多路自定义采集视频时,可参考以下步骤:
-
调用该方法创建视频轨道并获得视频轨道 ID。
-
在每个频道的
ChannelMediaOptions
中,将customVideoTrackId
参数设置为你想要发布的视频轨道 ID,并将publishCustomVideoTrack
设置为true
。 -
调用
pushExternalVideoFrameEx [2/2]
将videoTrackId
指定为步骤 2 中指定的视频轨道 ID,即可实现在多个频道中发布对应的自定义视频源。
返回值
-
方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
-
方法调用失败,返回负值。
destroyCustomVideoTrack
销毁指定的视频轨道。
public abstract int destroyCustomVideoTrack(int video_track_id);
参数
参数名 | 描述 |
---|---|
video_track_id | 调用 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
isTextureEncodeSupported
pushExternalVideoFrame [1/2]
推送外部原始视频帧到 SDK。
public abstract boolean pushExternalVideoFrame(AgoraVideoFrame frame);
如果你需要推送 I422 格式的视频帧,请使用该方法。其他情况下,请改用 pushExternalVideoFrame [2/2]
。
调用 setExternalVideoSource
方法,设置 enabled
参数为 true
、encodedFrame
参数为 false
后,你可以调用本方法将未编码的外部视频帧推送到 SDK。
调用该方法或 pushExternalVideoFrame [2/2]
均能将视频帧数据传递给SDK。区别为 pushExternalVideoFrame [1/2]
方法不支持 texture 格式的视频数据。
参数
参数名 | 描述 |
---|---|
frame | 待推送的视频帧。详见 |
返回值
-
true
:推送成功。 -
false
:推送失败。
pushExternalVideoFrame [2/2]
推送外部视频帧。
public abstract boolean pushExternalVideoFrame(VideoFrame frame);
该方法主动将视频帧数据用 VideoFrame
类封装后传递给 SDK。请确保在你调用本方法前已调用 setExternalVideoSource
, 并将参数 enable
设置为 true
,不然调用本方法后会一直报错。
调用该方法或 pushExternalVideoFrame [1/2]
均能将视频帧数据传递给SDK。区别为 pushExternalVideoFrame [2/2]
方法支持 texture 格式的视频数据。
参数
参数名 | 描述 |
---|---|
frame | 待推送的外部原始视频帧。详见 |
返回值
-
true
:推送成功。 -
false
:推送失败。
pushExternalVideoFrameEx [1/2]
推送外部原始视频帧到 SDK。
public abstract int pushExternalVideoFrameEx(AgoraVideoFrame frame, int videoTrackId);
该方法已废弃,请改用 pushExternalVideoFrameEx [2/2]
。
该方法主动将视频帧数据用 VideoFrame
类封装后传递给 SDK。请确保在你调用本方法前已调用 createCustomVideoTrack
获得视频轨道 ID。
调用该方法或 pushExternalVideoFrameEx [2/2]
均能将视频帧数据传递给 SDK。区别为 pushExternalVideoFrameEx [1/2]
方法不支持 texture 格式的视频数据。
参数
参数名 | 描述 |
---|---|
frame | 待推送的视频帧。详见 |
videoTrackId | 调用 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
pushExternalVideoFrameEx [2/2]
推送外部原始视频帧到 SDK。
public abstract int pushExternalVideoFrameEx(VideoFrame frame, int videoTrackId);
该方法主动将视频帧数据用 VideoFrame
类封装后传递给 SDK。请确保在你调用本方法前已调用 createCustomVideoTrack
获得视频轨道 ID。
调用该方法或 pushExternalVideoFrameEx [1/2]
均能将视频帧数据传递给 SDK。区别为 pushExternalVideoFrameEx [2/2]
方法支持 texture 格式的视频数据。
参数
参数名 | 描述 |
---|---|
frame | 待推送的外部原始视频帧。详见 |
videoTrackId | 调用 |
返回值
-
0: 推送成功。
-
< 0: 推送失败。
setExternalVideoSource
设置外部视频源。
public abstract int setExternalVideoSource(
boolean enable, boolean useTexture, Constants.ExternalVideoSourceType sourceType);
注意: 请在加入频道前调用该方法。
参数
参数名 | 描述 |
---|---|
enable | 是否启用外部视频源:
|
useTexture | 是否使用 texture 格式的外部视频帧:
|
sourceType | 外部视频帧是否编码,详见 |
返回值
-
0:方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。