Skip to main content

AidStream SDK V3 for C++

C++ API预览

结构体(struct)成员变量名(public member variable)类型(Type)描述(Description)
Imagedataconst char *指向存放数据的缓冲区的指针
widthint目标图片宽度
heightint目标图片高度
sizeuint64_t图片数据所占内存长度
fpsdouble帧率
公共函数(public function)描述(Description)
void clogger(const char* path_and_prefix)创建日志,设置文件名及路径
void set_log_level(GSTLogLevel log_level)设置日志级别
typedef function<int8_t( const Image & )> GetImageCB启流函数的入参,用于获取图片资源。此函数由使用者自定义。接口仅提供类型定义来规范回调函数的定义。
int start_stream(string stream_id, GetImageCB &cb)根据stream id 启动流
int start_stream_input_file(string file_path, GetImageCB cb, StreamType display_type=EMPTY, string target_path="", int width, int height)启动文件流
int start_stream_input_rtsp(string rtsp_addr, GetImageCB cb, StreamType display_type=EMPTY, string target_path="", int width, int height);启动RTSP流
int start_stream_input_rtmp(string rtmp_addr, GetImageCB cb, StreamType display_type=EMPTY, string target_path="", int width, int height)启动RTMP流
枚举(ENUM)成员变量名(public member variable)类型(Type)描述(Description)
GSTLogLevelSINFOuint8_t日志级别SINFO
SWARNINGuint8_t日志级别SWARNING
SERRORuint8_t日志级别SERROR
SDEBUGuint8_t日志级别SDEBUG
SOFFuint8_t日志级别SOFF
StreamTypeEMPTYuint8_t流协议类型为空
WAYLANDSINKuint8_t流协议类型为WayLand
RTSPSINKuint8_t流协议类型为RTSP
RTMPSINKuint8_t流协议类型为RTMP

结构体Image

定义图片数据相关信息,包括图片配置信息及指针变量。

成员变量名类型默认值描述
dataconst char *指向存放数据的缓冲区的指针
widthint图片宽度
heightint图片高度
sizeuint64_t图片数据所占内存长度
fpsdouble帧率
warning

如非特殊说明,所有的定义都属于名字空间Aidlux::AidStream。可通过以下命令在代码中引入:

using namespace Aidlux::AidStream;

根据stream id 启动流

APIint start_stream(string stream_id, GetImageCB &cb)
描述启动流。 入参为stream id, stream id及对应配置定义在文件/usr/local/share/aidstream-gst/conf/aidstream-gst.conf中。在此配置文件中stream id 要求唯一。
参数stream_id:标识唯一的流配置。cb:回调函数。关于回调函数,请参考回调函数。关于如何配置,请参考Reference
返回值0:成功, -1: 失败

举例如下:

// 启动流,标识为stream1
int res = start_stream("stream1", my_cb);

启动文件流

APIint start_stream_input_file(string file_path, GetImageCB cb, StreamType display_type, string target_path="", int width, int height)
描述启动文件流。 不依赖配置文件,直接配置相应参数。
参数file_path:源MP4数据文件。cb:回调函数。display_type:输出流类型。 target_path:输出流目标地址。width:宽(输出流)。 height:高(输出流)。注:8550不支持配置输出流宽高, 可不用设置
返回值0:成功, -1: 失败

举例如下:

// 启动文件流
int res = start_stream_input_file("./test.mp4", my_cb, StreamType::WAYLANDSINK, "rtsp://192.168.111.115:8554/aidstream-gst-test-6");

启动 RTSP 流

APIint start_stream_input_rtsp(string rtsp_addr, GetImageCB cb, StreamType display_type=EMPTY, string target_path="", int width, int height)
描述启动rtsp流。 不依赖配置文件,直接配置相应参数。
参数rtsp_addr:源rtsp地址。cb:回调函数。display_type:输出流类型。 target_path:输出流目标地址。width:宽(输出流)。 height:高(输出流)。注:8550不支持配置输出流宽高, 可不用设置
返回值0:成功, -1: 失败

举例如下:

// 启动rtsp流
int res = start_stream_input_rtsp("rtsp://admin:aidlux123@192.168.110.234:554/h264/ch1/main/av_stream", my_cb, StreamType::RTSPSINK, "rtsp://192.168.111.115:8554/aidstream-gst-test-3");

启动 RTMP 流

APIint start_stream_input_rtmp(string rtmp_addr, GetImageCB cb, StreamType display_type=EMPTY, string target_path="", int width, int height)
描述启动rtmp流。 不依赖配置文件,直接配置相应参数。
参数rtmp_addr:源rtmp地址。cb:回调函数。display_type:输出流类型。 target_path:输出流目标地址。width:宽(输出流)。 height:高(输出流)。注:8550不支持配置输出流宽高, 可不用设置
返回值0:成功, -1: 失败

举例如下:

// 启动rtmp流
int res = start_stream_input_rtmp("rtmp://admin:aidlux123@192.168.110.234:554/h264/ch1/main/av_stream", my_cb, StreamType::EMPTY, "rtsp://192.168.111.115:8554/aidstream-gst-test-2");

创建日志,设置文件名及路径(函数clogger)

APIvoid clogger(const char* path_and_prefix)
描述创建日志,设置文件名及路径
参数path_and_prefix:带路径的日志文件名,例如"./aidclog_aidstream_"
返回值

举例如下:

// 创建日志,设置文件名及路径
const char* log_path = "./aidclog_aidstream_";
Aidlux::AidStream::clogger(log_path);

设置日志级别(函数set_log_level

APIvoid set_log_level(GSTLogLevel log_level)
描述设置日志级别。
参数log_level为GSTLogLevel类型的枚举,关于GSTLogLevel请参考枚举GSTLogLevel
返回值

举例如下:

//设置日志级别
Aidlux::AidStream::set_log_level(GSTLogLevel::SINFO);

日志级别(枚举GSTLogLevel)

成员变量名类型默认值描述
SINFOuint8_t0日志级别SINFO
SWARNINGuint8_t日志级别SWARNING
SERRORuint8_t日志级别SERROR
SDEBUGuint8_t日志级别SDEBUG
SOFFuint8_t日志级别SOFF

流类型(枚举StreamType流协议类型)

成员变量名类型默认值描述
EMPTYuint8_t0流协议类型为空
WAYLANDSINKuint8_t流协议类型为Wayland
RTSPSINKuint8_t流协议类型为rtsp
RTMPSINKuint8_t流协议类型为rtmp

回调函数GetImageCB

APItypedef std::function<int8_t(const Image & )> GetImageCB
描述启流函数的入参,用于获取图片资源。此函数由使用者自定义。接口仅提供类型定义来规范回调函数的定义。
参数参数一是结构体Image 的实例化对象,数据由此传入。Image对象包括的参数有指向数据缓冲区的指针、数据宽高、帧率等。具体请参考Image
返回值自定义

举例如下:

//回调函数定义
int8_t my_get_img_cb(const Image & img)
{
printf("width: %d, height: %d, fps: %f\n", img.width, img.height, img.fps);
......
return 0;
}