自定义视频采集和渲染
createCustomVideoTrack
创建一个自定义的视频轨道。
public abstract int createCustomVideoTrack();
详情
- 调用该方法创建视频轨道并获得视频轨道 ID。
- 调用 joinChannel [2/2] 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为
true
。 - 调用 pushExternalVideoFrameById [2/2] 将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。
返回值
- 方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
- 方法调用失败,返回 0xffffffff。详见错误码了解详情和解决建议。
destroyCustomVideoTrack
销毁指定的视频轨道。
public abstract int destroyCustomVideoTrack(int video_track_id);
参数
- video_track_id
- 调用 createCustomVideoTrack 方法返回的视频轨道 ID。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
isTextureEncodeSupported
pushExternalVideoFrameById [1/2]
将外部原始视频帧通过自定义视频轨道发布到频道中。
public abstract int pushExternalVideoFrameById(AgoraVideoFrame frame, int videoTrackId);
详情
- 调用 createCustomVideoTrack 方法创建视频轨道并获得视频轨道 ID。
- 调用 joinChannel [2/2] 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为
true
。 - 调用该方法将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。
- 如果你不再需要采集外部视频数据,可以调用 destroyCustomVideoTrack 销毁自定义采集的视频轨道。
- 如果你只想将采集到的外部视频数据用于本地预览、而不在频道内发布,可以调用 muteLocalVideoStream 取消发送视频流,或调用 updateChannelMediaOptions 将 publishCustomVideoTrack 设置为
false
。
调用该方法或 pushExternalVideoFrameById [2/2] 均能将视频帧数据传递给 SDK。区别为该方法不支持 Texture 格式的视频数据。
参数
- frame
待推送的视频帧。详见 AgoraVideoFrame。
- videoTrackId
- 调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
pushExternalVideoFrameById [2/2]
将外部原始视频帧通过自定义视频轨道发布到频道中。
public abstract int pushExternalVideoFrameById(VideoFrame frame, int videoTrackId);
详情
- 调用 createCustomVideoTrack 方法创建视频轨道并获得视频轨道 ID。
- 调用 joinChannel [2/2] 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为
true
。 - 调用该方法将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。
- 如果你不再需要采集外部视频数据,可以调用 destroyCustomVideoTrack 销毁自定义采集的视频轨道。
- 如果你只想将采集到的外部视频数据用于本地预览、而不在频道内发布,可以调用 muteLocalVideoStream 取消发送视频流,或调用 updateChannelMediaOptions 将 publishCustomVideoTrack 设置为
false
。
调用该方法或 pushExternalVideoFrameById [1/2] 均能将视频帧数据传递给 SDK,区别为该方法支持 Texture 格式的视频数据。
参数
- frame
- 待推送的外部原始视频帧。详见 VideoFrame。
- videoTrackId
- 调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。
返回值
- 0: 推送成功。
- < 0: 推送失败。详见错误码了解详情和解决建议。
pushExternalVideoFrame [1/2]
推送外部原始视频帧到 SDK。
public abstract boolean pushExternalVideoFrame(AgoraVideoFrame frame);
详情
调用 setExternalVideoSource 方法,设置 enabled 参数为 true
、encodedFrame 参数为 false
后,你可以调用本方法将未编码的外部视频帧推送到 SDK。
调用该方法或 pushExternalVideoFrame [2/2] 均能将视频帧数据传递给 SDK。区别为该方法不支持 Texture 格式的视频数据。
参数
- frame
待推送的视频帧。详见 AgoraVideoFrame。
返回值
true
:方法调用成功。false
:方法调用失败。详见错误码了解详情和解决建议。
pushExternalVideoFrame [2/2]
推送外部原始视频帧到 SDK。
public abstract boolean pushExternalVideoFrame(VideoFrame frame);
详情
调用 setExternalVideoSource 方法,设置 enabled 参数为 true
、encodedFrame 参数为 false
后,你可以调用本方法将未编码的外部视频帧推送到 SDK。
调用该方法或 pushExternalVideoFrame [1/2] 均能将视频帧数据传递给 SDK。区别为该方法支持 Texture 格式的视频数据。
参数
- frame
- 待推送的外部原始视频帧。详见 VideoFrame。
返回值
true
:方法调用成功。false
:方法调用失败。详见错误码了解详情和解决建议。
setExternalVideoSource
设置外部视频源。
public abstract int setExternalVideoSource(
boolean enable, boolean useTexture, Constants.ExternalVideoSourceType sourceType);
调用该方法启用外部视频源后,你可以调用 pushExternalVideoFrameById [1/2] 向 SDK 推送外部视频数据。
调用时机
该方法需要在加入频道前调用。
调用限制
不支持在频道内动态切换视频源。如果已调用该方法启用外部视频源并加入频道,若想切换为内部视频源,必须先退出频道,然后调用该方法关闭外部视频源,再重新加入频道。
参数
- enable
- 是否启用外部视频源:
true
: 启用外部视频源。SDK 准备接收外部视频帧。false
:(默认)不启用外部视频源。
- useTexture
- 是否使用 Texture 格式的外部视频帧:
true
: 使用 Texture 格式的外部视频帧。false
: 不使用 Texture 格式的外部视频帧。
- sourceType
- 外部视频帧是否编码,详见 ExternalVideoSourceType。
返回值
- 0:方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。