有奖:语音产品征文挑战赛火热进行中> HOT
说明:
视频观看与切流,用于控制远端设备上现场设备视频流的显示。目前支持对多个现场设备的多个视频流进行观看和切换。由远端设备 SDK 发起,无需对现场设备 SDK 进行操作。

用法介绍

视频流的接收

远端设备接收视频流时,调用 TRRO_connect 接口会通过视频流接收器来接收视频流,并关联到通过TRRO_setWindows接口设置的视频显示窗口。下图是一组视频流和显示窗口关联关系示意:
?
?
?
现场设备视频流:由现场设备 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();
?


http://www.vxiaotou.com