Giter Site home page Giter Site logo

zy_sdk's Introduction

ZY_SDK API 说明,本SDK仅为海思SDK的补充,让开发海思应用功能更加简单,支持rtsp、rtmp、hls,常见IPC摄像头,录像、回放、字幕、台标、抓拍、U盘和硬盘管理等功能。SDK定期更新,免费维护,欢迎使用。

使用时需要把相应的头文件和库加进去。库依赖FFmpeg,需要把FFmpeg解压并配置好Makefile,依赖libZY_Media.so,相关的动态库需要复制到板子并配置好环境,如果是购买开发板,一般情况已经配置好。文件夹需要把ZY_include包含进去。

v1.4 2019-06-29 淘宝旺旺:精嵌科技 淘宝店铺:精嵌高科

/************************************************/

1、RTSPServer

rtsp服务端,支持多个通道,根据主控芯片的编码性能,可以选择通道的数量。支持H.265,H.264,音频,视频等。

默认地址为两类:rtsp://ip:554/ZY_stream_ch%d/h264或者rtsp://ip:554/ZY_stream_ch%d/h265,"%d"为通道号,比如通道号为0,码流为H.265,地址为rtsp://ip:554/ZY_stream_ch0/h265.

比如通道号为1,码流为H.264,地址为rtsp://ip:554/ZY_stream_ch1/h264.

1.1 int ZY_MPI_RtspServer_Init();

功能:初始化rtsp服务端

参数:无

返回:0:成功,-1:失败;

1.2 int ZY_MPI_RtspServer_UnInit();

功能:退出rtsp服务端

参数:无

返回:0:成功,-1:失败;

1.3 int ZY_MPI_RtspServer_CreateChn(unsigned int rtspChn,ZY_RTSP_ATTR attr);

功能:创建一个rtsp服务端通道,具体通道号发送音视频数据。

参数:1:通道号;2:rtsp服务端的属性,可以选择码流种类,需要跟实际编码格式对应,否则解析不了数据。

返回:0:成功,返回其他参数查看错误码;

1.4 int ZY_MPI_RtspServer_SendVideoFrame(unsigned int rtspChn,unsigned char *pdata ,unsigned int length,unsigned long long int pts,ZY_CodecType type);

功能:发送视频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;参数4:时间戳,时间戳为-1为自动时间戳,API会自动处理,默认建议用户填写-1;参数5:编码类别。

返回:0:成功,返回其他参数查看错误码;

1.5 int ZY_MPI_RtspServer_SendAudioFrame(unsigned int rtspChn,unsigned char *pdata ,unsigned int length,unsigned long long int pts,ZY_CodecType type);

功能:发送音频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;参数4:时间戳,时间戳为-1为自动时间戳,API会自动处理,默认建议用户填写-1;参数5:编码类别。

返回:0:成功,返回其他参数查看错误码;

/************************************************/

1.6 数据类型

1.6.1 RTSP_TYPE,流类型选择,是否有音频

typedef enum _RTSP_TYPE

{

RTSP_H264 = 1,//只要H.264流视频

RTSP_H265,//只要H.265流视频

RTSP_H264_AAC,//H.264+AAC流

RTSP_H265_AAC,//H.265+AAC流

} RTSP_TYPE;

1.6.2 ZY_RTSP_ATTR,rtsp属性结构体

typedef struct _ZY_RTSP_ATTR

{

ZY_AUDIO_SOUND_MODE_E enSoundmode; //音频声道

ZY_AUDIO_SAMPLERATE samplerate;    //音频采样率

RTSP_TYPE type;                   //rtsp流类型

} ZY_RTSP_ATTR;

1.7 错误码

#define ZY_ERR_RTSPSERVER_INVALID_CHNID 0xA0B08000

#define ZY_ERR_RTSPSERVER_INVALID_FILEPATH 0xA0B08001

#define ZY_ERR_RTSPSERVER_INVALID_OPENFILE 0xA0B08002

#define ZY_ERR_RTSPSERVER_INVALID_CODECID 0xA0B08003

#define ZY_ERR_RTSPSERVER_INVALID_NOSUPPORT 0xA0B08004

#define ZY_ERR_RTSPSERVER_INVALID_CHNEXIST 0xA0B08005

#define ZY_ERR_RTSPSERVER_INVALID_OPENCODEC 0xA0B08006

#define ZY_ERR_RTSPSERVER_INVALID_PARAM 0xA0B08007

#define ZY_ERR_RTSPSERVER_INVALID_CHNUNEXIST 0xA0B08008

2、 RTMP push

rtmp推流,支持多个通道,根据主控芯片的编码性能,可以选择通道的数量。支持H.264,H.265,音频,视频等。

注:RTMP H.265为非标准协议兼容性差,用户只能自编自解。

2.1 int ZY_MPI_RtmpPush_Init();

功能:初始化rtmp推流

参数:无

返回:0:成功,-1:失败;

2.2 int ZY_MPI_RtmpPush_CreateChn(unsigned int rtmpChn,const char * purl,RTMP_ATTR attr);

功能:创建一个rtmp推流通道,具体通道号发送音视频数据。

参数:1:通道号;2:推流地址;3:rtmp推流的属性

返回:0:成功,返回其他参数查看错误码;

2.3 int ZY_MPI_RtmpPush_DestroyChn(unsigned int rtmpChn,RTMP_TYPE type);

功能:销毁一个rtmp推流通道 参数:1:通道号;2:rtmp类型

返回:0:成功,返回其他参数查看错误码;

2.4 int ZY_MPI_RtmpPush_SendVideoFrame(unsigned int rtmpChn,const char *pdata ,unsigned int length,unsigned long long int pts,ZY_CodecType type);

功能:发送音频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;参数4:时间戳,时间戳为-1为自动时间戳,API会自动处理,默认建议用户填写-1;参数5:编码类型

返回:0:成功,返回其他参数查看错误码;

2.5 int ZY_MPI_RtmpPush_SendAudioFrame(unsigned int rtmpChn,const char *pdata ,unsigned int length,unsigned long long int pts,ZY_CodecType type);

功能:发送音频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;参数4:时间戳,时间戳为-1为自动时间戳,API会自动处理,默认建议用户填写-1;参数5:编码类型

返回:0:成功,返回其他参数查看错误码;

2.6 数据类型

2.6.1 RTMP类型

typedef enum _RTMP_TYPE

{

RTMP_H264, //只有H.264视频

RTMP_H265, //只有H.265视频

RTMP_H264_AAC,  //AAC+H.264

RTMP_H265_AAC,  //AAC+H.265

RTMP_IGNORE //自动类型

} RTMP_TYPE;

2.6.2 RTMP属性

typedef struct _RTMP_ATTR

{

RTMP_TYPE  type;

int ChunkSize; //-1 defaut ,ChunkSize;

int MessageBiggestSize;//-1 defaut ,MessageBiggestSize

} RTMP_ATTR;

2.7 错误码

#define ZY_ERR_RTMPPUSH_INVALID_CHNID 0xA0B09000

#define ZY_ERR_RTMPPUSH_INVALID_FILEPATH 0xA0B09001

#define ZY_ERR_RTMPPUSH_INVALID_OPENFILE 0xA0B09002

#define ZY_ERR_RTMPPUSH_INVALID_CODECID 0xA0B09003

#define ZY_ERR_RTMPPUSH_INVALID_NOSUPPORT 0xA0B09004

#define ZY_ERR_RTMPPUSH_INVALID_CHNEXIST 0xA0B09005

#define ZY_ERR_RTMPPUSH_INVALID_PUSH 0xA0B09006

#define ZY_ERR_RTMPPUSH_INVALID_PARAM 0xA0B09007

#define ZY_ERR_RTMPPUSH_INVALID_CHNUNEXIST 0xA0B09008

#define ZY_ERR_RTMPPUSH_INVALID_THREAD 0xA0B09009

/************************************************/

3、 hls push

hls推流使用rtmp转换,配置好相关的推流服务器即可,这里没有API说明。

/************************************************/

4、 录像,录像支持常见的格式录像,MP4、FLV、AVI、TS等。

4.1 int ZY_MPI_Muxer_Init();

功能:初始化录像;

参数:无;

返回:0:成功,返回其他参数查看错误码;

4.2 int ZY_MPI_Muxer_CreateChn(unsigned int chn,ZY_MUXER_ATTR * pMuxerAttr);

功能:创建录像,开始录像

参数:1:通道号;参数2:录像的属性

返回:0:成功,返回其他参数查看错误码;

4.3 int ZY_MPI_Muxer_DetroyChn(unsigned int chn);

功能:销毁录像,停止录像

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

4.4 int ZY_MPI_Muxer_PauseChn(unsigned int chn,ZY_MUXER_IS_PAUSE isPause);

功能:暂停录像

参数:1:通道号;2:暂停、恢复录像

返回:0:成功,返回其他参数查看错误码;

4.5 int ZY_MPI_Muxer_SendVideoFrame(unsigned int chn,unsigned char * pdata ,unsigned int size);

功能:发送视频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;

返回:0:成功,返回其他参数查看错误码;

4.6 int ZY_MPI_Muxer_SendAudioFrame(unsigned int chn,unsigned char * pdata ,unsigned int size);

功能:发送音频数据,海思编码后把数据之间填进来,支持按帧,按包格式发送。

参数:1:通道号;2:数据;参数3:长度;

返回:0:成功,返回其他参数查看错误码;

4.7 数据类型

4.7.1 编码类型

typedef enum {

ZY_H264   =0,

ZY_H265   =1,

}ZY_VECN_TYPE;

4.7.2 录像文件类型

typedef enum {

ZY_ONLYVIDEO   =0, //只有视频

ZY_ONLYAUDIO   =1, //只有音频

ZY_VIDEOAUDIO  =2, //具有音视频

}ZY_MUXER_TYPE;

4.7.3 暂停和正常运行枚举

typedef enum {

ZY_MUXER_RUN  =0, //运行

ZY_MUXER_PAUSE   =1, //暂停

}ZY_MUXER_IS_PAUSE;

4.7.4 录像属性结构体

typedef struct _ZY_MUXER_ATTR

{

//video

char fileName[512]; //录像文件名

unsigned int width; //视频宽

unsigned int height; //视频高

ZY_PIC_FPS fps; //帧率

ZY_VECN_TYPE vencType; //编码类型

//audio

ZY_AUDIO_BIT_WIDTH_E bitWidth; //音频数据宽度

ZY_AUDIO_SOUND_MODE_E chnMode; //声道模式

ZY_AUDIO_SAMPLERATE sample_rate; //采样率

ZY_AUDIO_BIT_RATE_E bitRate;   //比特率


ZY_MUXER_TYPE type;

}ZY_MUXER_ATTR,* pZY_MUXER_ATTR;

4.8 错误码

#define ZY_ERR_MUXER_INVALID_CHNID 0xA0A0A000

#define ZY_ERR_MUXER_INVALID_FILEPATH 0xA0A0A001

#define ZY_ERR_MUXER_INVALID_CREATEFILE 0xA0A0A002

#define ZY_ERR_MUXER_INVALID_CODECID 0xA0A0A003

#define ZY_ERR_MUXER_INVALID_PARAM 0xA0A0A004

#define ZY_ERR_MUXER_INVALID_DESTROYFILE 0xA0A0A005

#define ZY_ERR_MUXER_INVALID_THREAD 0xA0B0A006

#define ZY_ERR_MUXER_INVALID_CHNEXIT 0xA0B0A007

/************************************************/

5、回放模块,支持本地文件回放、rtsp IPC、rtmp 拉流等功能。

5.1 int ZY_MPI_Demux_Init();

功能:初始化Demux模块;

参数:无;

返回:0:成功,返回其他参数查看错误码;

5.2 int ZY_MPI_Demux_CreateChn(unsigned int Chn,const char * pstring);

功能:创建Demux通道,打开指定的URL文件或者地址

参数:1:通道号;参数2:URL

返回:0:成功,返回其他参数查看错误码;

5.3 int ZY_MPI_Demux_DestroyChn(unsigned int Chn);

功能:销毁Demux通道

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

5.4 int ZY_MPI_Demux_GetFrame(unsigned int Chn,unsigned char ** ppdata ,unsigned int * psize);

功能:获取一帧数据,Get和Release配对使用

参数:1:通道号;2:获取到的数据,需要双重指针;3:获取到的长度

返回:0:成功,返回其他参数查看错误码;

5.5 int ZY_MPI_Demux_ReleaseFrame(unsigned int Chn,unsigned char * pdata ,unsigned int size);

功能:释放一帧数据,Get和Release配对使用

参数:1:通道号;2:数据;3:数据长度

返回:0:成功,返回其他参数查看错误码;

5.6 int ZY_MPI_Demux_BindVdecAdec(unsigned int chn,ZY_DEMUXBIND_ATTR Attr); 功能:绑定指定的Demux通道到海思解码器,绑定后会自动关联解码器并把解码后的数据传输给VPSS.

参数:1:通道号;2:绑定属性

返回:0:成功,返回其他参数查看错误码;

5.7 int ZY_MPI_Demux_UnBindVdecAdec(unsigned int chn,ZY_DEMUXBIND_ATTR Attr);

功能:解绑指定的Demux通道到海思解码器

参数:1:通道号;2:绑定属性

返回:0:成功,返回其他参数查看错误码;

5.8 int ZY_MPI_Demux_GetCtrlAttr(unsigned int chn,ZY_DEMUXBIND_ATTR * pCtrl);

功能:获取绑定熟悉

参数:1:通道号;2:绑定属性

返回:0:成功,返回其他参数查看错误码;

5.9 int ZY_MPI_Demux_SetCtrlAttr(unsigned int chn,ZY_DEMUXBIND_ATTR ctrl);

功能:设置绑定熟悉

参数:1:通道号;2:绑定属性

返回:0:成功,返回其他参数查看错误码;

5.10 int ZY_MPI_Demux_StartSeekStep(unsigned int chn,int seekStep,DEMUX_SEEK_DIRECTION SeekDirection);

功能:seek API,单位为10S

参数:1:通道号;2:seekStep为X1,X2,X4,X8等参数,单位为10S,即seekStep等于2时,seek为20S;通道3:Seek方向,快进或快退

返回:0:成功,返回其他参数查看错误码;

5.11 int ZY_MPI_Demux_StartSeekLength(unsigned int chn,long long int seekLength);

功能:seek API,单位为us

参数:1:通道号;2:Seek到指定位置,单位us

返回:0:成功,返回其他参数查看错误码;

5.12 int ZY_MPI_Demux_StopSeek(unsigned int chn);

功能:停止seek,恢复正常播放

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

5.13 数据类型

5.13.1 解码数据类型

enum DEMUX_TYPE

{

DEMUX_AUDIO = 0, //音频数据

DEMUX_VIDEO = 1, //视频数据

};

5.13.2 视频格式类型

typedef enum _ZY_VIDEO_TYPE

{

VIDEO_TYPE_H264 = 0, //H.264

VIDEO_TYPE_H265 = 1, //H.265

VIDEO_TYPE_JPEG = 2, //JPEG

}ZY_VIDEO_TYPE;

5.13.3 解码播放状态

typedef enum _ZY_DemuxCtrlSignal

{

DEMUX_CTRL_STOP = 0,  //停止运行

DEMUX_CTRL_SEEK,      //拖动或者快进

DEMUX_CTRL_PAUSE,     //暂停

DEMUX_CTRL_START,     //开始或者恢复正常运行

}ZY_DemuxCtrlSignal;

5.13.4 运行模式选择

typedef enum _ZY_TimeStampMode

{

ZY_TIMESTAMP_MODE_FULL = 0, //no sleep,即全速运行,对IPC、流媒体适用

ZY_TIMESTAMP_MODE_SYNC,    // sync with time stamp,同步运行,对本地文件适用

ZY_TIMESTAMP_MODE_BLOCK,  //block time,堵塞固定时间运行,可以根据播放状态调整

}ZY_TimeStampMode;

5.13.5 解码器和解码URL绑定属性

typedef struct _ZY_DEMUXBIND_ATTR

{

//video

int VdecBlock; //视频堵塞解码


//audio
int AdecBlock; //音频堵塞解码


//chn
unsigned int chn;  //解码器通道,海思实际解码器

ZY_TimeStampMode timeMode;  //运行模式

unsigned int usBlock;  //ZY_TIMESTAMP_MODE_BLOCK  effective,运行模式为ZY_TIMESTAMP_MODE_BLOCK时,堵塞时间

ZY_DemuxCtrlSignal ctrl; //运行状态配置

}ZY_DEMUXBIND_ATTR,* pZY_DEMUXBIND_ATTR;

5.13.6 播放器状态

typedef enum _ZY_DEMUXSTATE{

ZY_DEMUXSTATE_LOST = 1, //码率断开

ZY_DEMUXSTATE_EOF = 2,  //结束

ZY_DEMUXSTATE_TIMEOUT = 3,  //超时

ZY_DEMUXSTATE_PAUSE = 4,    //暂停

ZY_DEMUXSTATE_STOP = 5,    //停止 

ZY_DEMUXSTATE_RUN = 6,     //正常运行

ZY_DEMUXSTATE_SEEK = 7,    //拖动或快进快退

ZY_DEMUXSTATE_ERROR = 8,   //错误

} ZY_DEMUXSTATE;

5.14 错误码

#define ZY_ERR_DEMUX_INVALID_CHNID 0xA0B0B000

#define ZY_ERR_DEMUX_INVALID_FILEPATH 0xA0B0B001

#define ZY_ERR_DEMUX_INVALID_OPENFILE 0xA0B0B002

#define ZY_ERR_DEMUX_INVALID_CODECID 0xA0B0B003

#define ZY_ERR_DEMUX_INVALID_NOSUPPORT 0xA0B0B004

#define ZY_ERR_DEMUX_INVALID_CHNEXIST 0xA0B0B005

#define ZY_ERR_DEMUX_INVALID_OPENCODEC 0xA0B0B006

#define ZY_ERR_DEMUX_INVALID_PARAM 0xA0B0B007

#define ZY_ERR_DEMUX_INVALID_CHNUNEXIST 0xA0B0B008

#define ZY_ERR_DEMUX_INVALID_THREAD 0xA0B0B009

/************************************************/

6、字幕、台标、OSD、时间显示等功能,支持文字输入,BMP图片输入,PNG透明度图片输入

6.1 int ZY_MPI_OSD_CreateChn(int chn);

功能:创建OSD通道

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

6.2 int ZY_MPI_OSD_DestroyChn(int chn);

功能:销毁OSD通道

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

6.3 int ZY_MPI_OSD_SetChnAttr(int chn,ZY_OSD_ATTR_S attr);

功能:设置OSD通道属性

参数:1:通道号;2:OSD属性

返回:0:成功,返回其他参数查看错误码;

6.4 int ZY_MPI_OSD_GetChnAttr(int chn,ZY_OSD_ATTR_S * pattr);

功能:获取OSD通道属性

参数:1:通道号;2:OSD属性

返回:0:成功,返回其他参数查看错误码;

6.5 int ZY_MPI_OSD_BindDst(int OsdChn,ZY_OSD_DST_ATTR dstAttr,ZY_BOOL show,ZY_OSD_SHOW_ATTR_S showAttr);

功能:绑定OSD到指定的VPSS显示,这是由于海思的框架决定

参数:1:通道号;2:绑定属性;3:是否显示OSD;4:显示属性

返回:0:成功,返回其他参数查看错误码;

6.6 int ZY_MPI_OSD_UnBindDst(int OsdChn,ZY_OSD_DST_ATTR dstAttr);

功能:解绑OSD到指定的VPSS显示

参数:1:通道号;2:绑定属性

返回:0:成功,返回其他参数查看错误码;

6.7 int ZY_MPI_OSD_ShowEnable(int OsdChn,ZY_OSD_DST_ATTR dstAttr,ZY_BOOL show,unsigned int u32X,unsigned int u32Y);

功能:使能显示,可以切换关闭或者显示

参数:1:通道号;2:绑定属性;3:是否显示OSD;4:X位置;5:Y位置

返回:0:成功,返回其他参数查看错误码;

6.8 int ZY_MPI_OSD_SetShowPoint(int OsdChn,ZY_OSD_DST_ATTR dstAttr,unsigned int u32X,unsigned int u32Y);

功能:设置显示位置

参数:1:通道号;2:绑定属性;3:是否显示OSD;4:X位置;5:Y位置

返回:0:成功,返回其他参数查看错误码;

6.9 int ZY_MPI_OSD_SetShow(int OsdChn,const char* pName,ZY_OSD_SRC_TYPE srcType,unsigned int color,unsigned int fontSize,unsigned int * pWidth,unsigned int * pHeight,ZY_BOOL autoShow);

功能:设置显示属性

参数:1:通道号;2:需要显示的字符;3:显示类型,文字、图片等类型;4:文字颜色,仅对文字有效,图片无效;5:文字大小,字号,仅对文字有效;6:实际显示的占用的宽,比如创建OSD宽为1920,但是显示10个字符的长度仅为100像素。7:实际高度,比如字体为36,获取字体的实际高度。

返回:0:成功,返回其他参数查看错误码;

6.10 数据类型

6.10.1 OSD绑定目标

typedef enum _ZY_OSD_DST_TYPE

{

ZY_OSD_BINDVI, //绑定到VI显示

ZY_OSD_BINDVENC, //绑定到VENC显示

ZY_OSD_BINDVPSS, //绑定到VPSS显示

} ZY_OSD_DST_TYPE;

6.10.2 OSD绑定目标熟悉

typedef struct _ZY_OSD_DST_ATTR

{

ZY_OSD_DST_TYPE dstType;  //目标类型

unsigned int dstChn;     //目标的通道号

unsigned int Osdlayer;  //OSD的layer

} ZY_OSD_DST_ATTR;

6.10.3 OSD属性

typedef struct _ZY_OSD_ATTR_S

{

/* bitmap pixel format*/

ZY_PIXEL_FORMAT_E enPixelFmt;   //yuv数据格式

/* background color, pixel format depends on "enPixelFmt" */

unsigned int  u32BgColor;  //OSD背景颜色

/* region size */

Y_SIZE_S stSize;	//区域大小

unsigned int u32CanvasNum; //区域的内存数量

}ZY_OSD_ATTR_S;

6.10.4 定义OSD 反色触发模式

typedef enum _ZY_INVERT_COLOR_MODE_E

{

ZY_LESSTHAN_LUM_THRESH = 0,   /* the lum of the video is less than the lum threshold which is set by u32LumThresh  */ 

ZY_MORETHAN_LUM_THRESH,       /* the lum of the video is more than the lum threshold which is set by u32LumThresh  */

ZY_INVERT_COLOR_BUTT

}ZY_INVERT_COLOR_MODE_E;

6.10.5 定义OSD 反色相关属性

typedef struct _ZY_OSD_INVERT_COLOR_S

{

ZY_SIZE_S              stInvColArea;                //it must be multipe of 16 but not more than 64.

unsigned int              u32LumThresh;                //the threshold to decide whether invert the OSD's color or not.

ZY_INVERT_COLOR_MODE_E enChgMod;      

ZY_BOOL             bInvColEn;                   //the switch of inverting color.

}ZY_OSD_INVERT_COLOR_S;

6.10.6 定义OSD编码QP值 typedef struct _ZY_OSD_SHOW_QPINFO

{

ZY_BOOL	 bQpDisable;

ZY_BOOL  bAbsQp;

int   s32Qp;

}ZY_OSD_SHOW_QPINFO;

6.10.6 定义显示属性 typedef struct _ZY_OSD_SHOW_ATTR_S

{

/* start point */
 
ZY_POINT_S stPoint;

/* foreground transparence */

unsigned int u32FgAlpha; //default 255

/* background transparence */

unsigned int u32BgAlpha; //default 255

/* QP infomation when venc*/

ZY_OSD_SHOW_QPINFO stQpInfo;  

/* invertColor infomation*/

ZY_OSD_INVERT_COLOR_S stInvertColor;

}ZY_OSD_SHOW_ATTR_S;

6.10.7 定义显示位置

typedef enum _ZY_OSD_AUTO_POSITION

{

AUTO_NULL = -1,

AUTO_LEFT_TOP = 0,   

AUTO_LEFT_BOTTOM,     

AUTO_RIGHT_TOP,

AUTO_RIGHT_BOTTOM,   

AUTO_LEFT_MIDDLE,

AUTO_RIGHT_MIDDLE,

AUTO_CENTRE_TOP,   

AUTO_CENTRE_MIDDLE, 

AUTO_CENTRE_BOTTOM, 

}ZY_OSD_AUTO_POSITION;

6.11 错误码

#define ZY_ERR_OSD_INVALID_DEVID 0xA0038001

#define ZY_ERR_OSD_INVALID_CHNID 0xA0038002

#define ZY_ERR_OSD_ILLEGAL_PARAM 0xA0038003

#define ZY_ERR_OSD_EXIST 0xA0038004

#define ZY_ERR_OSD_UNEXIST 0xA0038005

#define ZY_ERR_OSD_NULL_PTR 0xA0038006

#define ZY_ERR_OSD_NOT_CONFIG 0xA0038007

#define ZY_ERR_OSD_NOT_SUPPORT 0xA0038008

#define ZY_ERR_OSD_NOT_PERM 0xA0038009

#define ZY_ERR_OSD_NOMEM 0xA003800C

#define ZY_ERR_OSD_NOBUF 0xA003800D

#define ZY_ERR_OSD_BUF_EMPTY 0xA003800E

#define ZY_ERR_OSD_BUF_FULL 0xA003800F

#define ZY_ERR_OSD_NOTREADY 0xA0038010

#define ZY_ERR_OSD_BADADDR 0xA0038011

#define ZY_ERR_OSD_BUSY 0xA0038012

/************************************************/

7、抓拍JPEG图片,自动把抓拍到的图片保存到指定路径

7.1 int ZY_MPI_Snap_StartJPEG(int VencChn,unsigned int u32Width,unsigned int u32Height);

功能:启动抓拍,立刻生效

参数:1:指令抓拍用哪个编码器编码;2:宽;3:高

返回:0:成功,返回其他参数查看错误码;

7.2 int ZY_MPI_Snap_StopJPEG(int VencChn);

功能:停止抓拍,立刻生效

参数:1:指令抓拍用哪个编码器编码;

返回:0:成功,返回其他参数查看错误码;

7.3 int ZY_MPI_Snap_SAVEJPEG(int vpssGroup,int vpssChn,int VencChn,const char * pFileName,unsigned int u32Width,unsigned int u32Height,int timeOut);

功能:保存抓拍到的数据到指定的通道

参数:1:VPSS组号,也即为数据来源;2:VPSS 通道号;3:编码器号;4:保存文件名和路径;5:长;6:宽;7:设置多长超时返回;

返回:0:成功,返回其他参数查看错误码;

7.4 错误码

#define ZY_ERR_DEMUX_INVALID_VPSSDEPTH 0xA1B08000

#define ZY_ERR_DEMUX_INVALID_GETFRAME 0xA1B08001

#define ZY_ERR_DEMUX_INVALID_SENDFRAME 0xA1B08002

#define ZY_ERR_DEMUX_INVALID_JPEGFRAME 0xA1B08003

#define ZY_ERR_DEMUX_INVALID_VPSSMODE 0xA1B08004

/************************************************/

8、U盘和SATA硬盘热插拔管理,支持一个U盘和一个SATA硬盘的自动管理,U盘自动挂载在/tmp/usbDisk,SATA硬盘自动挂载在/tmp/hardDisk

8.1 void ZY_MPI_UDiskOrHardDisk_Init();

功能:初始化硬盘挂载

参数:无

返回:0:无

8.2 int ZY_MPI_UDiskOrHardDisk_HotPlug_Start();

功能:启动硬盘自动挂载

参数:无

返回:0:成功,返回其他参数查看错误码;

8.3 int ZY_MPI_UDiskOrHardDisk_HotPlug_Stop();

功能:停止硬盘自动挂载

参数:无

返回:0:成功,返回其他参数查看错误码;

8.4 错误码

#define ZY_ERR_UDISKORHARDDISK_INVALID_SECID 0xA0D08001

#define ZY_ERR_UDISKORHARDDISK_INVALID_PARAM 0xA0D08004

#define ZY_ERR_UDISKORHARDDISK_INVALID_THREAD 0xA0D08006

/************************************************/

9、QT支持,自动配置QT FB,使用此函数后,不需要关心QT FB配置

9.1 int ZY_MPI_FB_Open(int fb,int width,int height);

功能:初始化QT FB配置

参数:1:指定的fB;2:设置FB的宽;3:设置FB的高

返回:0:成功,返回其他参数查看错误码;

/*************************************************************/

10、 RTMP 拉流H.265 此章节仅仅用于H.265拉流,配合本SDK的推流,一编一解。

10.1 int ZY_MPI_RtmpH265Poll_Init();

功能:RTMP拉流初始化

参数:无

返回:0:成功,返回其他参数查看错误码;

10.2 int ZY_MPI_RtmpH265Poll_CreateChn(unsigned int rtmpPollChn,const char * purl,RTMPH265POLL_ATTR attr);

功能:RTMP拉流通道创建,把采集到的音视频传送到指定的硬件编解码通道

参数:1:通道号;2:RTMP 拉流的URL;参数3:拉流属性

返回:0:成功,返回其他参数查看错误码;

10.3 int ZY_MPI_RtmpH265Poll_DestroyChn(unsigned int rtmpPollChn);

功能:销毁RTMP 拉流通道

参数:1:通道号;

返回:0:成功,返回其他参数查看错误码;

10.4 数据类型

typedef struct _RTMPH265POLL_ATTR

{

int VdecBlock; //视频堵塞解码,单位10ms,0为不堵塞解码,填写指定的时间为堵塞时间


//audio
int AdecBlock; //音频堵塞解码,单位10ms,0为不堵塞解码,填写指定的时间为堵塞时间


//chn
int rtmpChn; //rtmp 通道号,即创建时候的通道号

unsigned int VdecChn; //获取到的视频发送到指定的解码器

unsigned int AdecChn; //获取到的音频发送到指定的解码器


unsigned int type; //此暂时不开放

} RTMPH265POLL_ATTR;

10.5 错误码

#define ZY_ERR_RTMH265POLL_INVALID_CHNID 0xA0F09000

#define ZY_ERR_RTMH265POLL_INVALID_FILEPATH 0xA0F09001

#define ZY_ERR_RTMH265POLL_INVALID_OPENFILE 0xA0F09002

#define ZY_ERR_RTMH265POLL_INVALID_CODECID 0xA0F09003

#define ZY_ERR_RTMH265POLL_INVALID_NOSUPPORT 0xA0F09004

#define ZY_ERR_RTMH265POLL_INVALID_CHNEXIST 0xA0F09005

#define ZY_ERR_RTMH265POLL_INVALID_PUSH 0xA0F09006

#define ZY_ERR_RTMH265POLL_INVALID_PARAM 0xA0F09007

#define ZY_ERR_RTMH265POLL_INVALID_CHNUNEXIST 0xA0F09008

#define ZY_ERR_RTMH265POLL_INVALID_THREAD 0xA0F09009

zy_sdk's People

Contributors

ccz1669877854 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.