腾讯云实时互动工业能源版C/C++ 现场设备 SDK API_音视频解决方案_同尘科技

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

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);
参数 含义
config   重配置 json 数据



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

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

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

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

- 0人点赞 -

发表点评 (0条)

not found

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