API 描述
适用于 Linux 64位系统。头文件引用 trro_field.h,API 可参考头文件中接口注释。下面列举常用接口描述。禁止:所有 SDK 接口不支持嵌套使用
初始化接口
使用说明:可根据是否使用本地 license(公有云无需本地 license)以及配置输入类型(文件/字符串),选择对应的初始化接口进行初始化,只需使用一个。
使用 json 字符串初始化
使用说明:用户需确保 json 字符串格式正确,此接口用于 SDK 加载配置进行初始化。
/** @name : TRRO_initGwJson* @brief : 使用字符串初始化* @input : json_str 配置文件json字符串* @input : mode 0 同步模式,一直等待* -1 异步模式,初始化成功后通知TRRO_onSignalState* @return : 1 for success, other failed*/int TRRO_initGwJson(const char * json_str, int mode = 0);
json_str |
配置信息 josn字符串 |
mode |
返回模式。0:同步阻塞模式1:异步模式 |
使用配置文件路径初始化
使用说明:用户需确保 json 配置文件格式正确,此接口用于 SDK 加载配置进行初始化。
/** @name : TRRO_initGwPath* @brief : 使用配置文件初始化* @input : cfg_path json配置文件路径名,e.g. "./config.json"* @input : mode 0 同步模式一直等待* -1 异步模式,初始化成功后TRRO_onSignalState信息* @return : 1 for success, other failed*/int TRRO_initGwPath(const char * cfg_path, int mode = 0);
cfg_path |
配置文件路径 |
mode |
返回模式。0:同步阻塞模式1:异步模式 |
使用配置文件路径及 license 文件路径初始化
使用说明:用户需确保 json 配置文件格式正确,license 文件路径正常,此接口用于 SDK 加载配置进行初始化。
/** @name : TRRO_initGwPathWithLicense* @brief : 使用配置文件和本地license初始化* @input : cfg_path json配置文件路径名,e.g. "./config.json"* @input : license_path license文件路径名,e.g. "./license.txt"* @input : mode 0 同步模式一直等待* -1 异步模式 初始化成功后通知TRRO_onSignalState* @return : 1 for success, other failed*/int TRRO_initGwPathWithLicense(const char * cfg_path, const char * license_path, int mode = 0);
cfg_path |
配置文件名 |
license_path |
本地 license 文件路径 |
mode |
返回模式0:同步阻塞模式1:异步模式 |
使用配置字符串和 license 文件路径初始化
使用说明:用户需确保 json 字符串和 licens 内容格式正确,此接口用于 SDK 加载配置进行初始化。
/** @name : TRRO_initGwJsonWithLicense* @brief : 使用字符串和本地license初始化* @input : json_str 配置文件json字符串* @input : license_path license文件路径名,e.g. "./license.txt"* @input : mode 初始化模式* 0 同步模式一直等待* -1 异步模式, 初始化成功后通知TRRO_onSignalState* @return : 1 for success, other failed*/int TRRO_initGwJsonWithLicense(const char * json_str, const char * license_path, int mode = 0);
json_str |
配置文件 json 字符串 |
license_path |
license 路径 |
mode |
返回模式。0:同步阻塞模式1:异步模式 |
注册信令状态回调(异步初始化回调)
使用说明:此接口用于注册信令状态回调接口,异步模式初始化时需使用,根据 Ready 状态判断初始化成功。
/** @name : TRRO_registerSignalStateCallback* @brief : 注册信令服务连接状态回调* @input : context 上下文 callback 回调函数* @return : 1 for success, other failed*/int TRRO_registerSignalStateCallback(void *context, TRRO_onSignalState *callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
回调定义enum SignalState { kTrroReady, kTrroLost, kTrroReup,};
/** @name : TRRO_onSignalState* @brief : 信令连接状态回调* @input : context 上下文* state kTrroReady 连接建立成功* kTrroLost 连接断开,内部会进行自动重连* kTrroReup 自动重连成功* @return : void*/typedef void TRRO_onSignalState(void *context, SignalState state);
context |
回调上下文,返回注册时传入的 context |
state |
信令连接状态 |
启动接口
使用说明:此接口用于启动现场设备 SDK,初始化成功后方可调用,即同步模式初始化返回成功, 或者异步模式初始化 TRRO_onSignalState 通知连接 Ready。
/*** @name TRRO_start* @brief 启动音视频传输业务, 需要等待初始化成功后调用(同步模式init返回成功 或 异步模式初始化TRRO_onSignalState通知连接Read)* @param[in] void* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_start();
停止接口
使用说明:此接口用于停止现场设备 SDK
/*** @name TRRO_stop* @brief 销毁SDK,释放sdk资源* @param[in] void* @return void*/extern "C" TRRO_EXPORT void TRRO_stop();
输入外部源视频流(图像数据)
使用说明:此接口用于提供用户输入视频的原始图像数据流,注意输入数据源需与配置文件中的流数目、流配置节点相匹配。输入的数据源 width、height 需与 现场设备配置说明 中的 width、height 一致,同时配置文件中”protocol”节点值修改为”outside”。
/*** @name TRRO_externalVideoData* @brief 外部图像输入接口* @param[in] stream_id 流ID* @param[in] data 消息体* @param[in] width 数据源宽* @param[in] height 数据源高* @param[in] type 数据源类型,当前支持Trro_ColorYUVI420 Trro_ColorJPEG Trro_ColorYUYV* @param[in] dataSize 数据大小,为0时会自动根据格式计算大小,发送JPEG等无特定大小数据时需指定* @param[in] text 图像要叠加字符串(experimental)* @param[in] point_x 叠加文字起始x坐标,最左侧为0 (experimental)* @param[in] point_y 叠加文字起始y坐标,最顶部为0 (experimental)* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_externalVideoData(int stream_id, const char * data, int width, int height, int type, int dataSize = 0, const char* text = "", int point_x = 0, int point_y = 0);
stream_id |
视频流 ID,从0开始,第2路为1,以此递增 |
data |
图像数据 |
width |
图像宽 |
height |
图像高 |
type |
图像类型。 0:YUVI4204:YUYV5:JPEG,推荐 YUVI420 格式 |
dataSize |
图像数据大小,0为自动计算,发送 jpeg 等无固定大小图像格式需指定 |
text |
保留 |
point_x |
保留 |
point_y |
保留 |
输入外部源视频流(编码数据)
使用说明:此接口用于提供用户输入已编码视频流进行传输,注意输入数据源需与配置文件中的流数目、流配置节点相匹配。输入的数据源 width、height 需与 现场设备配置说明 中的 width、height 一致。输入视频流编码类型(例如 H264) 需要与配置文件中对应流的 codec 一致,关键帧中包含 SPS/PPS 信息,同时配置文件中”protocol”节点值修改为”outenc”。
/*** @name TRRO_externalEncodeVideoData* @brief 外部编码流输入,编码流codec需要与配置codec一致* @param[in] stream_id 流ID* @param[in] data 消息体* @param[in] width 数据源宽* @param[in] height 数据源高* @param[in] size 数据大小* @param[in] type 数据源类型,参考FrameType* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_externalEncodeVideoData(int stream_id, const char * data, int width, int height, int size, FrameType type);
stream_id |
视频流 ID,从0开始,第2路为1,以此递增 |
data |
视频流数据 |
width |
视频款 |
height |
视频高 |
size |
视频帧大小 |
type |
编码类型。 0:P帧1:I帧(需包含 SPS/PPS 信息) |
注册编码建议信息回调
使用说明:此接口配合外部编码流输入数据接口共同使用,用户需可根据此接口的回调信息,对输入的编码流进行处理。
/*** @name TRRO_registerEncodeFrameInfoCallback* @brief 注册编码建议信息回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerEncodeFrameInfoCallback(void *context, TRRO_onEncodeFrameInfo *callback);
context |
上下文指针,回调时返回该上下文指针用于定位 |
callback |
回调函数 |
回调函数定义
/*** @name TRRO_onEncodeFrameInfo* @brief 编码建议信息回调,适用于外部输入编码帧场景* @param[in] context 上下文* @param[in] stream_id 流ID* @param[in] type 回调类型, 0:强制关键帧请求 , 1 码率更新请求 * @param[in] bitrate type为1时有效,表示建议输入的编码数据码率,单位kbps * @return void */typedef void TRRO_onEncodeFrameInfo(void *context, int stream_id, int type, int bitrate);
context |
回调上下文,返回注册时传入的 context |
strem_id |
流 ID |
type |
回调类型。0:强制关键帧请求1:码率更新请求 |
bitrate |
当 type 为1时有效,表示建议输入的编码数据码率,单位 kpbs |
向远端设备发送数据
使用说明:此接口用于发送二进制数据到远端设备,配合远端设备 SDK 数据回调接口使用,此接口可根据需求选择是否调用。
/*** @name TRRO_sendControlData* @brief 向远端设备发送数据* @param[in] msg 消息体* @param[in] len 消息体长度* @param[in] qos 0:unreliable 1:reliable* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_sendControlData(const char* msg, int len, int qos = 0);
msg |
二进制消息内容 |
len |
消息长度 |
qos |
发送 qos 类型。0:非可靠传输1:可靠传输 |
注册远端设备控制消息回调
使用说明:此接口用于注册远端设备 SDK 发送的控制数据回调函数,可根据需要实现。
/*** @name TRRO_registerControlDataCallback* @brief 注册远端设备消息回调函数* @param[in] context 上下文指针,回调时会返回该上下文指针* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerControlDataCallback(void* context, TRRO_onControlData * callback);
context |
上下文指针,回调时会返回该上下文指标用于定位 |
callback |
回调函数 |
回调函数定义
/*** @name TRRO_onControlData* @brief 接收远端设备消息回调* @param[in] context 上下文指针,返回注册时传入的context* @param[in] controller_id 远端设备ID* @param[in] msg 消息体内容* @param[in] len 消息体长度* @param[in] qos 消息qos类型 0:unreliable, 1:reliable* @return void*/typedef void TRRO_onControlData(void *context, const char *controller_id, const char* msg, int len, int qos);
context |
回调上下文,返回注册时传入的 context |
controller_id |
远端设备 ID |
msg |
控制消息字符串 |
len |
字符串长度 |
qos |
消息 qos 类型。0:不可靠传输1:可靠传输 |
注册视频连接状态回调
使用说明:此接口用于注册视频流连接状态回调,此接口可根据需求选择是否调用。
/*** @name TRRO_registerOnState* @brief 注册视频连接状态回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerOnState(void* context, TRRO_OnState * callback);
context |
上下文指针,回调时返回该上下文用于定位 |
callback |
回调函数 |
回调函数定义enum TrroState { kDisconnect = 0, /**< 断连 */ kConnecting = 1, /**< 连接中 */ kConnected = 2, /**< 已连接 */ kDisconnecting = 3, /**< 已断连 */};
/*** @name TRRO_onState* @brief 视频连接状态回调* @param[in] context 上下文* @param[in] stream_id 视频流id* @param[in] state TrroState连接状态* @return void*/typedef void TRRO_OnState(void* context, int stream_id, int state);
注册延迟状态回调
使用说明:此接口用于注册延迟状态回调,可按需选择使用。
/** @name : TRRO_registerLatencyCallback* @brief : 注册时延回调函数* @input : context 上下文 callback 回调函数* @return : 1 for success, other failed*/int TRRO_registerLatencyCallback(void *context, TRRO_onLatencyReport *callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
回调定义
/** @name : TRRO_onLatencyReport* @brief : 延迟信息回调* @input : context 上下文* stream_id 流ID vcct 视频控制闭环时延, 等于视频上行延迟(不含采集)+控制下行延迟* @return : void*/typedef void TRRO_onLatencyReport(void *context, int stream_id, int vcct);
context |
回调上下文,返回注册时传入的 context |
stream_id |
流 ID |
vcct |
视频控制闭环时延,等于视频上行+控制下行延迟 |
注册错误事件回调
使用说明:此接口用于注册错误事件回调,当推流端出现异常时触发回调,可按需选择使用。
/*** @name TRRO_registerOnErrorEvent* @brief 注册错误事件回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerOnErrorEvent(void* context, TRRO_OnErrorEvent * callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_OnErrorEvent* @brief 错误信息回调* @param[in] context 上下文* @param[in] error_code 错误码 为负值* @param[in] error_msg 错误信息* @return void*/typedef void TRRO_OnErrorEvent(void* context, int error_code, const char* error_msg);
context |
上下文指针,回调时会返回该指针用于定位 |
error_code |
错误码 |
error_msg |
错误信息 |
注册时延回调
使用说明:此接口用于在现场设备侧获取推流到拉流的视频数据处理延时,可按需选择使用。
/*** @name TRRO_registerLatencyCallback* @brief 注册时延回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerLatencyCallback(void *context, TRRO_onLatencyReport *callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_onLatencyReport* @brief 延迟信息回调* @param[in] context 上下文* @param[in] stream_id 流ID* @param[in] vcct 视频控制闭环时延, 等于视频上行延迟(不含采集)+控制下行延迟* @return void */typedef void TRRO_onLatencyReport(void *context, int stream_id, int vcct);
context |
上下文指针,回调时会返回该指针用于定位 |
stream_id |
流 ID |
vcct |
视频控制闭环时延, 等于视频上行延迟(不含采集)+控制下行延迟 |
注册媒体状态回调
使用说明:此接口用于在现场设备获取已连接视频流的媒体状态,可按需选择使用。
/*** @name TRRO_registerMediaState* @brief 注册网络状态* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerMediaState(void* context, TRRO_onMediaState * callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_onMediaState* @brief 媒体传输状态回调* @param[in] context 回调上下文指针* @param[in] stream_id 流ID * @param[in] fps 每秒帧数目* @param[in] bps 每秒数据量* @param[in] rtt 封包来回时间* @param[in] lost 总丢包数目* @param[in] packets_send 总发送数目* @param[in] stun 穿网模式 0:host, 1:srflx, 2:prflx, 3:relay* @return void */typedef void TRRO_onMediaState(void* context, int stream_id, int fps, int bps, int rtt, long long lost, long long packets_send, int stun);
context |
上下文指针,回调时会返回该指针用于定位 |
stream_id |
流 ID |
fps |
每秒帧数目 |
bps |
每秒数据量 |
rtt |
封包来回时间 |
lost |
总丢包数目 |
packets_send |
总发送数目 |
stun |
穿网模式 0:host, 1:srflx, 2:prflx, 3:relay |
注册远端设备操控权限请求通知回调
使用说明:此接口用于在现场设备接收权限控制请求,可按需选择使用。
/*** @name TRRO_registerOperationPermissionRequest* @brief 注册远端设备操控权限请求通知回调* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerOperationPermissionRequest(void *context, TRRO_onOperationPermissionRequest *callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_onOperationPermissionRequest* @brief 远端设备操控权限申请通知* @param[in] remote_devid 请求权限的remote deviceId* @param[in] permission 请求的权限,参考TrroPermission, 0: guest 只有观看权限, 1: master 完全控制权限* @return void */typedef void TRRO_onOperationPermissionRequest(void* context, const char* remote_devid, int permission);
context |
上下文指针,回调时会返回该指针用于定位 |
remote_devid |
请求权限的 remote deviceId |
permission |
请求的权限,参考TrroPermission, 0: guest 只有观看权限, 1: master 完全控制权限 |
设置远端设备操作权限
使用说明:此接口用于在改现场设备设置远端设备的操作权限
/** * @name TRRO_setOperationPermission * @brief 设置远端设备操控权限,目前同时只能有一个远端设备有master权限,若已有远端设备是master权限,调用该接口设置master权限,会自动取消之前设备的master权限然后设置新设备; * @param[in] remote_devid 设置权限的对端设备id * @param[in] permission 参考 TrroPermission, 0 guest,只有观看权、1 master, 完全控制权限 * @return 1 for success, other failed */extern "C" TRRO_EXPORT int TRRO_setOperationPermission(const char* remote_devid, int permission);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
注册视频采集数据回调函数
使用说明:此接口用于在改现场设备获取采集的相机数据源,供上层业务使用
/*** @name TRRO_registerVideoCaptureCallback* @brief 注册视频采集数据回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerVideoCaptureCallback(void* context, TRRO_onVideoCaptureData * callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_onVideoCaptureData* @brief 采集视频帧回调* @param[in] context 上下文指针,返回注册时传入的context* @param[in] data 视频数据* @param[in] width 宽* @param[in] height 高* @param[in] type 视频格式,0 YUV420, 4 YUYV* @param[in] stream_id 流号* @return void */typedef void TRRO_onVideoCaptureData(void *context, const char* data, int width, int height, int type, int stream_id);
remote_devid |
设置权限的对端设备 ID |
data |
视频数据 |
width |
视频数据宽 |
height |
视频数据高 |
type |
视频格式,0 YUV420, 4 YUYV |
stream_id |
流号 |
注册日志回调函数
使用说明:此接口用于注册日志回调函数,供上层业务获取日志
/*** @name TRRO_registerLogCallback* @brief 注册日志回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerLogCallback(void *context, TRRO_OnLogData *callback);
context |
上下文指针,回调时会返回该指针用于定位 |
callback |
回调函数 |
/*** @name TRRO_OnLogData* @brief 日志回调* @param[in] context 上下文* @param[in] msg 日志内容* @param[in] level 日志级别,参考枚举TrroLogLevel* @return void */typedef void TRRO_OnLogData(void *context, const char *msg, int level);
context |
上下文指针,回调时会返回该指针用于定位 |
msg |
日志内容 |
level |
日志级别,参考枚举 TrroLogLevel |
启动录制
使用说明:在现场设配侧录制传输的264格式视频文件
/*** @name TRRO_startRecorder(Experimental)* @brief 启动录制* @param[in] recorderID 录制ID (若想录制采集流,id需设置成对应stream, config文件中stream_config需加上 “record_on”:1)* @param[in] format 录制格式:0 :264* @param[in] width 编码宽* @param[in] heigh 编码高* @param[in] jump 录制跳帧数(隔几帧录一帧)* @param[in] fps 编码帧率* @param[in] bps 码率* @param[in] filename 文件名* @param[in] config 录制选项(保留)* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_startRecorder(int recorderID, int format, int width, int heigh, int jump, int fps, int bps, const char* filename, const char* config);
recorderID |
录制 ID (若想录制采集流,ID 需设置成对应 stream, config 文件中 stream_config 需加上 “record_on”:1) |
format |
录制格式:0 :264 |
width |
编码宽 |
heigh |
编码高 |
jump |
录制跳帧数(隔几帧录一帧) |
fps |
编码帧率 |
bps |
码率 |
filename |
文件名 |
config |
录制选项(保留) |
发送录制数据
使用说明:输入yuv数据,录制为264编码数据。配合 TRRO_startRecorder 接口和 TRRO_stopRecorder 接口使用
/*** @name TRRO_sendRecordVideoData(Experimental)* @brief 发送录制数据* @param[in] recorderID 录制ID* @param[in] data 录制数据* @param[in] width 数据源宽* @param[in] height 数据源高* @param[in] size 录制数据大小* @param[in] format 视频源格式 1 yuv420 , 4 YUYV* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_sendRecordVideoData(int recorderID, const char* data, int width, int height, int format);
recorderID |
录制 ID(若想录制采集流,ID 需设置成对应 stream, config 文件中 stream_config 需加上 “record_on”:1) |
data |
录制数据 |
width |
编码宽 |
heigh |
编码高 |
size |
录制数据大小 |
format |
编码帧率 |
bps |
视频源格式 1 yuv420 , 4 YUYV |
切换录制文件
使用说明:切换录制文件,配合录制功能使用
/** * @name TRRO_switchRecorderFile(Experimental) * @brief 切换录制文件 * @param[in] recorderID 录制ID * @param[in] filename 文件名 * @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_switchRecorderFile(int recorderID, const char* filename);
recorderID |
录制 ID (若想录制采集流,ID 需设置成对应 stream, config 文件中 stream_config 需加上 “record_on”:1) |
filename |
录制文件名 |
结束录制
使用说明:停止录制,配合录制功能使用
/*** @name Trro_Linux_stopRecorder(Experimental)* @brief 停止录制* @param[in] recorderID 录制ID* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_stopRecorder(int recorderID);
recorderID |
录制 ID (若想录制采集流,ID 需设置成对应 stream, config 文件中 stream_config 需加上 “record_on”:1) |
静音设置
使用说明:关闭音频传输
/*** @name TRRO_audioMute(Experimental)* @brief Mute 拉流端的音频 仅Server模式* @param[in] userid 拉流端id* @param[in] mute 是否mute* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_audioMute(const char* userid, bool mute);
userid |
拉流端 ID |
mute |
是否 mute |
重置RTC服务
使用说明:重配置rtc服务
/*** @name TRRO_reinitRtc(Experimental)* @brief 重配置rtc,当前仅支持重置外采* @param[in] config 重配置json数据*/extern "C" TRRO_EXPORT int TRRO_reinitRtc(const char * config);
对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?