AidStream SDK V3 for C++
C++ API预览
结构体(struct) | 成员变量名(public member variable) | 类型(Type) | 描述(Description) |
---|---|---|---|
Image | data | const char * | 指向存放数据的缓冲区的指针 |
width | int | 目标图片宽度 | |
height | int | 目标图片高度 | |
size | uint64_t | 图片数据所占内存长度 | |
fps | double | 帧率 |
公共函数(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) |
---|---|---|---|
GSTLogLevel | SINFO | uint8_t | 日志级别SINFO |
SWARNING | uint8_t | 日志级别SWARNING | |
SERROR | uint8_t | 日志级别SERROR | |
SDEBUG | uint8_t | 日志级别SDEBUG | |
SOFF | uint8_t | 日志级别SOFF | |
StreamType | EMPTY | uint8_t | 流协议类型为空 |
WAYLANDSINK | uint8_t | 流协议类型为WayLand | |
RTSPSINK | uint8_t | 流协议类型为RTSP | |
RTMPSINK | uint8_t | 流协议类型为RTMP |
结构体Image
定义图片数据相关信息,包括图片配置信息及指针变量。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
data | const char * | 指向存放数据的缓冲区的指针 | |
width | int | 图片宽度 | |
height | int | 图片高度 | |
size | uint64_t | 图片数据所占内存长度 | |
fps | double | 帧率 |
注意
如非特殊说明,所有的定义都属于名字空间Aidlux::AidStream。可通过以下命令在代码中引入:
using namespace Aidlux::AidStream;
根据stream id 启动流
API | int 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);
启动文件流
API | int 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 流
API | int 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 流
API | int 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)
API | void 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
API | void set_log_level(GSTLogLevel log_level) |
---|---|
描述 | 设置日志级别。 |
参数 | log_level为GSTLogLevel类型的枚举,关于GSTLogLevel请参考枚举GSTLogLevel |
返回值 | 无 |
举例如下:
//设置日志级别
Aidlux::AidStream::set_log_level(GSTLogLevel::SINFO);
日志级别(枚举GSTLogLevel)
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
SINFO | uint8_t | 0 | 日志级别SINFO |
SWARNING | uint8_t | 日志级别SWARNING | |
SERROR | uint8_t | 日志级别SERROR | |
SDEBUG | uint8_t | 日志级别SDEBUG | |
SOFF | uint8_t | 日志级别SOFF |
流类型(枚举StreamType流协议类型)
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
EMPTY | uint8_t | 0 | 流协议类型为空 |
WAYLANDSINK | uint8_t | 流协议类型为Wayland | |
RTSPSINK | uint8_t | 流协议类型为rtsp | |
RTMPSINK | uint8_t | 流协议类型为rtmp |
回调函数GetImageCB
API | typedef 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;
}