自定义视频采集和渲染
- C#
更新时间不可用
CreateCustomVideoTrack
创建一个自定义的视频轨道。
public abstract video_track_id_t CreateCustomVideoTrack();详情
当你需要在频道中发布自定义采集视频时,可参考以下步骤:
- 调用该方法创建视频轨道并获得视频轨道 ID。
- 调用 JoinChannel [2/2] 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为
true。 - 调用 PushVideoFrame 将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。
返回值
- 方法调用成功,返回视频轨道 ID 作为该视频轨道的唯一标识。
- 方法调用失败,返回 0xffffffff。详见错误码了解详情和解决建议。
所属接口类
DestroyCustomVideoTrack
销毁指定的视频轨道。
public abstract int DestroyCustomVideoTrack(video_track_id_t video_track_id);参数
| 参数名 | 描述 |
|---|---|
video_track_id | 调用 CreateCustomVideoTrack 方法返回的视频轨道 ID。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
PushVideoFrame
将外部原始视频帧通过自定义视频轨道发布到频道中。
public abstract int PushVideoFrame(ExternalVideoFrame frame, uint videoTrackId = 0);详情
当你需要在频道中发布自定义采集视频时,可参考以下步骤:
-
调用 CreateCustomVideoTrack 方法创建视频轨道并获得视频轨道 ID。
注: 如果你只需推送一路自定义采集的视频流到频道中,可以直接调用 SetExternalVideoSource 方法启用外部视频源,此时 SDK 会自动创建一个 videoTrackId 为 0 的视频轨道。
-
调用 JoinChannel [2/2] 加入频道时,将 ChannelMediaOptions 中的 customVideoTrackId 设置为你想要发布的视频轨道 ID,并将 publishCustomVideoTrack 设置为
true。 -
调用该方法将 videoTrackId 指定为步骤 2 中指定的视频轨道 ID,即可实现在频道内发布对应的自定义视频源。
危险: 调用该方法后,即使你停止推送外部视频帧到 SDK,自定义采集的视频流仍然会被计入视频时长用量并产生费用,声网建议你根据实际情况采取相应措施避免此类视频计费:
- 如果你不再需要采集外部视频数据,可以调用 DestroyCustomVideoTrack 销毁自定义采集的视频轨道。
- 如果你只想将采集到的外部视频数据用于本地预览、而不在频道内发布,可以调用 MuteLocalVideoStream 取消发送视频流,或调用 UpdateChannelMediaOptions 将 publishCustomVideoTrack 设置为
false。
参数
| 参数名 | 描述 |
|---|---|
frame | 待推送的视频帧。详见 ExternalVideoFrame。 |
videoTrackId |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
SetExternalVideoSource
设置外部视频源。
public abstract int SetExternalVideoSource(bool enabled, bool useTexture, EXTERNAL_VIDEO_SOURCE_TYPE sourceType, SenderOptions encodedVideoOption);调用该方法启用外部视频源后,你可以调用 PushVideoFrame 向 SDK 推送外部视频数据。
调用时机
该方法需要在加入频道前调用。
调用限制
不支持在频道内动态切换视频源。如果已调用该方法启用外部视频源并加入频道,若想切换为内部视频源,必须先退出频道,然后调用该方法关闭外部视频源,再重新加入频道。
参数
| 参数名 | 描述 |
|---|---|
enabled | |
useTexture | |
sourceType | 外部视频帧是否编码,详见 EXTERNAL_VIDEO_SOURCE_TYPE。 |
encodedVideoOption | 视频编码选项。如果 sourceType 为 ENCODED_VIDEO_FRAME,则需要设置该参数。你可以联系技术支持了解如何设置该参数。 |
返回值
- 0:方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。