腾讯云实时互动工业能源版视频观看与切流_音视频解决方案_同尘科技
说明:视频观看与切流,用于控制远端设备上现场设备视频流的显示。目前支持对多个现场设备的多个视频流进行观看和切换。由远端设备 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折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?