腾讯云实时互动工业能源版视频观看与切流_音视频解决方案_同尘科技

实时互动工业能源版 1年前 (2023-10-23) 浏览 56

说明:视频观看与切流,用于控制远端设备上现场设备视频流的显示。目前支持对多个现场设备的多个视频流进行观看和切换。由远端设备 SDK 发起,无需对现场设备 SDK 进行操作。

用法介绍

视频流的接收

远端设备接收视频流时,调用 TRRO_connect 接口会通过视频流接收器来接收视频流,并关联到对应的视频显示窗口,如下所示:
现场设备视频流:由现场设备 ID + 流 ID 唯一标识。流 ID 编号从0到 N,对应现场设备 streams_config 配置中视频流数组的元素编号。视频显示窗口:由视频窗口句柄唯一标识,例如 win32 的 HWND。内部渲染模式下,SDK 可根据视频窗口句柄在指定窗口上进行视频渲染显示。外部渲染模式下,由开发者自己维护视频显示窗口和视频的渲染显示。远端设备视频流接收器:由接收句柄(conn_fd)唯一标识。接收句柄编号从0开始递增,可由开发者自定义,一般可设置为窗口编号。注意:同一时间,一个视频流接收器只能接收一个现场设备视频流。当视频流接收器连接新的视频流时,之前连接的视频流会自动断开。可以看出,对于内部渲染,远端设备视频流接收器桥接了现场设备视频流和视频窗口,可让 SDK 自动完成视频流显示。对于外部渲染,远端设备视频流接收句柄可协助开发者标识 SDK 回调的视频流数据应该在哪个窗口上进行渲染。

视频流的切换

远端设备进行视频流切换时,可通过 TRRO_connect 接口进行。根据新切换的视频流是否要在新的窗口显示,可分两类场景:1. 切换后视频流在已有窗口显示:使用已有窗口对应的接收句柄,通过 TRRO_connect 接口接收该窗口要切换的视频流。这时新视频流会切换到对应窗口显示,而窗口上原有视频流会被断开。2. 切换后视频流在新建窗口显示:使用新窗口对应的接收句柄,通过 TRRO_connect 接口接收切换后的视频流,并通过 TRRO_disconnect 接口断开切换前的视频流。

视频窗口的切换

内部渲染模式下,远端设备进行视频窗口切换时,可通过 TRRO_setWindows 接口进行。一般在 SDK 启动阶段,会将视频流接收器的接收句柄和视频窗口进行关联。在窗口布局需要调整时(比如交换两个视频流的所在窗口,而不涉及视频流本身的切换),可通过 TRRO_setWindows 接口更新视频流接收器的接收句柄和视频窗口的对应关系,从而在不断连视频流的情况下,完成视频流窗口的切换。

相关接口

连接视频流

使用说明:可通过该接口对现场设备视频流进行连接和切换。

/** @name :  TRRO_connect* @brief : 发起视频连接,可多次调用连接不同流,异步模式,根据 onState 状态回调确认视频连接成功* @input : gwid         目标连接的现场设备 ID*          record_config:*                       优先使用全局录制配置,当默认命名规则无法满足需求时使用,json 字符串,需要对每一路进行配置 eg:"{\"file_names\": [{\"file\":\"test\", \"duration\":15}, {\"file\":\"test01\", \"duration\":15}]}"  ps:file 文件名 duration 分片时长单位秒*          streams_num 要拉取现场设备视频流的个数, 与 conn_fds 和 streams_num 数组长度匹配, 值的范围 1 到 现场设备支持的device_streams数量*          streams_id  现场设备视频流的 ID 数组, 现场设备视频流ID从0开始, 最大值为现场设备支持的 device_streams 数量 -1*          conn_fds    conn_fd 数组,conn_fd 为接收视频流的句柄标识,自行编号,取值从0开始,最大值为 max_streams -1,max_streams在远端设备配置文件配置* @return : 成功 1 失败 <= 0*/int TRRO_connect(const char* gwid, const char* record_config, int streams_num, int* streams_id, int* conn_fds);
参数 含义
gwid 现场设备 ID
record_config 视频录制配置。json 字符串,需要对连接的每一路视频流进行配置。建议优先使用全局录制配置,无法满足时再使用该方式。

{	"file_names": [{		"file": "test",		"duration": 15	},     {		"file": "test01",		"duration": 15	}]}

参数:file:文件名 duration:切片时长(单位:秒)

streams_num 要连接视频流的数量
streams_id 要连接的现场设备视频流 ID 数组
conn_fds 接收视频流使用的接收视频流句柄数组
返回值 成功 1 失败 <= 0

设置视频流渲染窗口

使用说明:可通过该接口设置渲染窗口,内部渲染时使用,外部渲染时设置空指针即可。

/** @name :  TRRO_setWindows* @brief : 设置接收流句柄对应的显示窗口句柄* @input : conn_fds 接收视频流句柄数组*          windows  显示窗口句柄数组, 显示窗口句柄为显示窗体的句柄/指针,如 Windows 平台的 HWND;*                   外部渲染时,数组中的显示窗口句柄配置为 nullptr*          num      设置显示窗口数量,与 conn_fds 和 Windows 数组长度匹配* @return :void*/void TRRO_setWindows(int* conn_fds, WindowIdType * windows, int num);
参数 含义
conn_fds 接收视频流句柄数组
windows 显示窗口句柄数组,外部渲染时可设置为空指针数组
num 与 conn_fds 和 windows 数组长度一致

关闭视频连接

使用说明:可通过该接口断开视频连接。

关闭指定视频连接

/** @name :  TRRO_disconnect* @brief : 关闭conn_fds 对应的视频连接* @input : conn_fds 要关闭视频连接对应的视频接收句柄数组*          fd_num conn_fd数组长度* @return : 成功 1 失败 <= 0*/int TRRO_disconnect(int* conn_fds, int fd_num);
参数 含义
conn_fd 视频接收句柄数组
fd_num 数组长度
返回值 成功 1 失败 <= 0

关闭所有视频连接

/** @name :  TRRO_disconnectAll* @brief : 关闭所有视频连接* @input : void* @return : 成功 1 失败 <= 0*/int TRRO_disconnectAll();



对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?