Skip to main content

Rockchip RKADK Development Guide

:::info 文档信息

文档标识:RK-KF-YF-904 · 发布版本:V1.3.1 · 发布日期:2021-12-20 · 页数:129 · 语言:英文

原始文档:Rockchip_Developer_Guide_Linux_RKADK_CN.pdf

:::

章节大纲​

  • Rockchip RKADK Development Guide(P1)
    • 系统概述(P8)
    • 录像(P8)
      • 概述(P8)
      • API参考(P8)
        • RKADK_RECORD_Create(P8)
        • RKADK_RECORD_Destroy(P9)
        • RKADK_RECORD_Start(P10)
        • RKADK_RECORD_Stop(P11)
        • RKADK_RECORD_ManualSplit(P12)
        • RKADK_RECORD_RegisterEventCallback(P13)
        • RKADK_RECORD_GetAencChn(P13)
        • RKADK_GetThmInMp4(P14)
        • RKADK_GetThmInMp4Ex(P15)
        • RKADK_ThmBufFree(P15)
      • 数据类型(P16)
        • 公共数据类型(P17)
        • RKADK_MW_PTR(P18)
        • RKADK_MAX_SENSOR_CNT(P18)
        • RECORD_FILE_NUM_MAX(P18)
        • MUXER_EVENT_E(P18)
        • MUXER_FILE_EVENT_INFO_S(P19)
        • RKADK_REC_EVENT_INFO_S(P20)
        • RKADK_REC_EVENT_CALLBACK_FN(P20)
        • RKADK_REC_TYPE_E(P21)
        • RKADK_REC_REQUEST_FILE_NAMES_FN(P21)
        • RKADK_RECORD_ATTR_S(P22)
        • MUXER_MANUAL_SPLIT_TYPE_E(P23)
        • MUXER_PRE_MANUAL_SPLIT_ATTR_S(P23)
        • RKADK_REC_MANUAL_SPLIT_ATTR_S(P24)
    • 拍照(P25)
      • 概述(P25)
      • API 参考(P25)
        • RKADK_PHOTO_Init(P25)
        • RKADK_PHOTO_DeInit(P26)
        • RKADK_PHOTO_TakePhoto(P26)
        • RKADK_PHOTO_GetThmInJpg(P27)
        • RKADK_PHOTO_GetThmInJpgEx(P28)
        • RKADK_PHOTO_ThumbBufFree(P29)
        • RKADK_PHOTO_GetData(P30)
        • RKADK_PHOTO_FreeData(P31)
      • 数据类型(P31)
        • RKADK_PHOTO_TYPE_E(P32)
        • RKADK_PHOTO_SINGLE_ATTR_S(P32)
        • RKADK_PHOTO_MULTIPLE_ATTR_S(P33)
        • RKADK_PHOTO_THUMB_ATTR_S(P33)
        • RKADK_PHOTO_DATA_RECV_FN_PTR(P34)
        • RKADK_PHOTO_ATTR_S(P35)
        • RKADK_JPG_THUMB_TYPE_E(P36)
        • RKADK_THUMB_TYPE_E(P37)
        • RKADK_THUMB_ATTR_S(P38)
        • RKADK_PHOTO_DATA_ATTR_S(P38)
    • 远程预览(P40)
      • 概述(P40)
      • API参考(P40)
        • RKADK_STREAM_VideoInit(P40)
        • RKADK_STREAM_VideoDeInit(P41)
        • RKADK_STREAM_VencStart(P41)
        • RKADK_STREAM_VencStop(P42)
        • RKADK_STREAM_GetVideoInfo(P43)
        • RKADK_STREAM_VencRegisterCallback(P44)
        • RKADK_STREAM_VencUnRegisterCallback(P45)
        • RKADK_STREAM_AudioInit(P46)
        • RKADK_STREAM_AudioDeInit(P46)
        • RKADK_STREAM_AencStart(P47)
        • RKADK_STREAM_AencStop(P48)
        • RKADK_STREAM_GetAudioInfo(P49)
        • RKADK_STREAM_AencRegisterCallback(P50)
        • RKADK_STREAM_AencUnRegisterCallback(P50)
      • 数据类型(P51)
        • RKADK_CODEC_TYPE_E(P51)
        • RKADK_VENC_DATA_PROC_FUNC(P52)
        • RKADK_VIDEO_STREAM_S(P52)
        • RKADK_VENC_DATA_PACK_S(P53)
        • RKADK_VENC_DATA_TYPE_S(P54)
        • RKADK_VIDEO_INFO_S(P55)
        • RKADK_AENC_DATA_PROC_FUNC(P56)
        • RKADK_AUDIO_STREAM_S(P56)
        • RKADK_AUDIO_INFO_S(P57)
    • 播放器(P58)
      • 概述(P58)
      • API 参考(P58)
        • RKADK_PLAYER_Create(P58)
        • RKADK_PLAYER_Destroy(P59)
        • RKADK_PLAYER_SetDataSource(P59)
        • RKADK_PLAYER_Prepare(P60)
        • RKADK_PLAYER_SetVideoSink(P61)
        • RKADK_PLAYER_Play(P62)
        • RKADK_PLAYER_Stop(P63)
        • RKADK_PLAYER_Pause(P64)
        • RKADK_PLAYER_Seek(P64)
        • RKADK_PLAYER_GetPlayStatus(P65)
        • RKADK_PLAYER_GetDuration(P66)
      • 数据类型(P67)
        • RKADK_PLAYER_EVENT_E(P67)
        • RKADK_PLAYER_EVENT_FN(P68)
        • RKADK_PLAYER_CFG_S(P69)
        • RKADK_PLAYER_VO_FORMAT_E(P70)
        • RKADK_PLAYER_VO_DEV_E(P70)
        • RKADK_PLAYER_VO_INTF_TYPE_E(P71)
        • RKADK_PLAYER_VO_ATTR_S(P71)
        • RKADK_PLAYER_FRAMEINFO_S(P72)
        • RKADK_PLAYER_STATE_E(P74)
    • 直播(P75)
      • 概述(P75)
      • API参考(P75)
        • RTSP(P75)
          • RKADK_RTSP_Init(P75)
          • RKADK_RTSP_DeInit(P76)
          • RKADK_RTSP_Start(P77)
          • RKADK_RTSP_Stop(P77)
        • RTMP(P78)
          • RKADK_RTMP_Init(P78)
          • RKADK_RTMP_DeInit(P79)
    • 存储(P80)
      • 概述(P80)
      • API参考(P80)
        • RKADK_STORAGE_Init(P80)
        • RKADK_STORAGE_Deinit(P81)
        • RKADK_STORAGE_GetDevAttr(P82)
        • RKADK_STORAGE_GetMountStatus(P82)
        • RKADK_STORAGE_GetCapacity(P83)
        • RKADK_STORAGE_GetFileList(P84)
        • RKADK_STORAGE_FreeFileList(P85)
        • RKADK_STORAGE_GetFileNum(P86)
        • RKADK_STORAGE_GetDevPath(P86)
        • RKADK_STORAGE_Format(P87)
      • 数据类型(P88)
        • RKADK_MOUNT_STATUS(P88)
        • RKADK_SORT_TYPE(P89)
        • RKADK_SORT_CONDITION(P90)
        • RKADK_STR_FOLDER_ATTR(P90)
        • RKADK_STR_DEV_ATTR(P91)
        • RKADK_FILE_INFO(P92)
        • RKADK_FILE_LIST(P93)
        • RKADK_FILE_LIST_ARRAY(P93)
    • 本地预览(P94)
      • 概述(P94)
      • API参考(P94)
        • RKADK_DISP_Init(P94)
        • RKADK_DISP_DeInit(P95)
    • VI ISP API(P97)
      • 概述(P97)
      • API参考(P97)
        • RKADK_VI_ISP_Start(P97)
        • RKADK_VI_ISP_Stop(P98)
    • 参数设置(P99)
      • 概述(P99)
      • API参考(P99)
        • RKADK_PARAM_Init(P99)
        • RKADK_PARAM_GetCamParam(P100)
        • RKADK_PARAM_SetCamParam(P101)
        • RKADK_PARAM_GetCommParam(P102)
        • RKADK_PARAM_SetCommParam(P103)
        • RKADK_PARAM_SetDefault(P104)
        • RKADK_PARAM_GetResolution(P104)
        • RKADK_PARAM_GetResType(P105)
        • RKADK_PARAM_GetVencChnId(P106)
      • 数据类型(P107)
        • RKADK_DEFPARAM_PATH(P108)
        • RKADK_DEFPARAM_PATH_SENSOR_PREFIX(P108)
        • RKADK_PARAM_PATH(P108)
        • RKADK_PARAM_PATH_SENSOR_PREFIX(P108)
        • RKADK_PARAM_TYPE_E(P109)
        • RKADK_PARAM_RES_E(P112)
        • RKADK_STREAM_TYPE_E(P113)
        • RKADK_PARAM_CODEC_CFG_S(P114)
        • RKADK_PARAM_BITRATE_S(P114)
        • RKADK_PARAM_REC_TIME_S(P115)
        • RKADK_PARAM_GOP_S(P115)
        • RKADK_VQE_MODE_E(P116)
        • MUXER_TYPE_E(P117)
        • MUXER_PRE_RECORD_MODE_E(P117)
      • INI文件解析(P118)
        • 全局INI配置文件(P118)
        • Sensor INI配置文件(P119)
        • INI 配置注意事项(P123)
    • 示例(P123)
      • rkadk_record_test(P123)
      • rkadk_photo_test(P124)
      • rkadk_stream_test(P124)
      • rkadk_player_test(P125)
      • rkadk_thumb_test(P126)
      • rkadk_rtsp_test(P127)
      • rkadk_rtmp_test(P127)
      • rkadk_storage_test(P128)
      • rkadk_disp_test(P128)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


1. 系统概述​

rkadk在rkmedia和rockit的基础上做了进一步封装,提供了基础通用组件,如录像、拍照、播放、预览等,简化了应用开发难度,支持应用软件快速开发。

该组件仅支持单进程的功能实现,如无特殊说明,不支持多进程同时使用。

2. 录像​

2.1 概述​

提供基本的录像功能,向产品层提供如下功能:

录像任务的创建与销毁录像任务的启动与停止手动切分

录像任务通过参数模块获取Video和Audio信息,启停VENC,启停AENC;调用封装模块创建录像文件,写帧到文件。

每个录像任务对应一个或多个录像文件,每个文件必须对应一路视频编码通道,如果需要录制音频,需要加上一路音频编码通道。

同一录像任务下的多个录像文件,具有相同的录像类型,相同的切分条件,缩时录像模式下还具有相同的缩时间隔;可以配置不同的录像时间。

2.2 API参考​

2.2.1 RKADK_RECORD_Create​

创建录像任务。

RKADK_S32 RKADK_RECORD_Create(RKADK_RECORD_ATTR_S *pstRecAttr, RKADK_MW_PTR *ppRecorder);
参数名称描述输入/输出
pstRecAttr录像任务属性输入
ppRecorder创建的录像任务指针输出
返回值描述
0成功
非0失败

头文件:rkadk_record.h

每个录像任务最大支持同时录制2个录像文件。每个录像文件最少有1路视频流,最大支持同时封装1路视频流和1路音频流。不支持重复创建同一任务。

rkadk_record_test。

RKADK_RECORD_Destroy。

2.2.2 RKADK_RECORD_Destroy​

销毁录像任务。

RKADK_S32 RKADK_RECORD_Destroy(RKADK_MW_PTR pRecorder);
参数名称描述输入/输出
pRecorder录像任务指针输入
返回值描述
0成功
非0失败

头文件:rkadk_record.h

创建录像任务后,才能使用RKADK_RECORD_Destroy接口。只能销毁已创建的录像任务,不支持重复销毁同一录像任务。

rkadk_record_test。

RKADK_RECORD_Create

2.2.3 RKADK_RECORD_Start​

启动录像任务。

RKADK_S32 RKADK_RECORD_Start(RKADK_MW_PTR pRecorder);
参数名称描述输入/输出
pRecorder录像任务指针输入
返回值描述
0成功
非0失败

头文件:rkadk_record.h

创建录像任务后,才能使用RKADK_RECORD_Start接口。支持在停止录像任务后重新启动录像任务。

rkadk_record_test。

RKADK_RECORD_Stop

2.2.4 RKADK_RECORD_Stop​

停止录像任务。

RKADK_S32 RKADK_RECORD_Stop(RKADK_MW_PTR pRecorder);
参数名称描述输入/输出
pRecorder录像任务指针输入
返回值描述
0成功
非0失败

头文件:rkadk_record.h

创建录像任务后,才能使用RKADK_RECORD_Stop接口。不支持重复停止同一录像任务。rkadk_record_test。

RKADK_RECORD_Start

2.2.5 RKADK_RECORD_ManualSplit​

手动切分录像文件。

RKADK_S32 RKADK_RECORD_ManualSplit(RKADK_MW_PTR pRecorder, RKADK_REC_MANUAL_SPLIT_ATTR_S *pstSplitAttr);

参数名称描述输入/输出
pRecorder录像任务指针输入
pstSplitAttr手动切分属性参数输入
返回值描述
0成功
非0失败

头文件:rkadk_record.h

创建录像任务后,才能使用RKADK_RECORD_ManualSplit接口。支持在手动切分录像文件未结束时,重复手动切分录像文件。

rkadk_record_test。

无

2.2.6 RKADK_RECORD_RegisterEventCallback​

注册录像事件回调。

RKADK_S32 RKADK_RECORD_RegisterEventCallback(RKADK_MW_PTR pRecorder, RKADK_REC_EVENT_CALLBACK_FN pfnEventCallback);

参数名称描述输入/输出
pRecorder录像任务指针输入
pfnEventCallback录像事件回调函数指针输入
返回值描述
0成功
非0失败

头文件:rkadk_record.h

创建录像任务后,才能使用RKADK_RECORD_RegisterEventCallback 接口。

rkadk_record_test。

无

2.2.7 RKADK_RECORD_GetAencChn​

获取录像AENC通道号。

RKADK_S32 RKADK_RECORD_GetAencChn();

录像所使用的AENC通道号。

头文件:rkadk_record.h

2.2.8 RKADK_GetThmInMp4​

从MP4文件中获取缩略图数据。

RKADK_S32 RKADK_GetThmInMp4(RKADK_CHAR *pszFileName, RKADK_U8 *pu8Buf, RKADK_U32 *pu32Size);
参数名称描述输入/输出
pszFileNameMP4文件路径输入
pu8Buf缩略图数据指针输出
pu32Size输入:pu8Buf长度,输出:实际缩略图数据长度输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_thumb.h

rkadk_thumb_test

无

2.2.9 RKADK_GetThmInMp4Ex​

MP4获取缩略图扩展接口,从MP4文件中获取缩略图数据,支持指定输出缩略图的类型和分辨率。必须和RKADK_ThmBufFree配套使用。

RKADK_S32 RKADK_GetThmInMp4Ex(RKADK_CHAR *pszFileName, RKADK_THUMB_ATTR_S *pstThumbAttr);
参数名称描述输入/输出
pszFileNameMP4文件路径输入
pstThumbAttr缩略图属性结构体指针输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_thumb.h

rkadk_thumb_test

RKADK_ThmBufFree

2.2.10 RKADK_ThmBufFree​

释放RKADK_GetThmInMp4Ex申请的内存。必须和RKADK_GetThmInMp4Ex配套使用。

RKADK_S32 RKADK_ThmBufFree(RKADK_THUMB_ATTR_S *pstThumbAttr);
参数名称描述输入/输出
pstThumbAttr缩略图属性结构体指针输入
返回值描述
0成功
非0失败

头文件:rkadk_thumb.h

rkadk_thumb_test

RKADK_GetThmInMp4Ex

2.3 数据类型​

录像模块主要提供以下数据类型:

RKADK_MW_PTR:录像任务指针

RECORD_FILE_NUM_MAX:单个录像任务同时录制最大文件个数

MUXER_EVENT_E:录像事件枚举类型

MUXER_FILE_EVENT_INFO_S:文件相关事件信息结构体

RKADK_REC_EVENT_INFO_S:录像事件信息结构体

RKADK_REC_EVENT_CALLBACK_FN:事件回调函数指针

RKADK_REC_TYPE_E:录像类型枚举

RKADK_REC_REQUEST_FILE_NAMES_FN:请求录像文件名函数指针

RKADK_RECORD_ATTR_S:录像任务属性结构体

MUXER_MANUAL_SPLIT_TYPE_E:手动切分枚举类型

MUXER_PRE_MANUAL_SPLIT_ATTR_S:手动切分预录属性结构体

RKADK_REC_MANUAL_SPLIT_ATTR_S:手动切分属性结构体

2.3.1 公共数据类型​

【说明】

基本数据类型定义。

【定义】

typedef unsigned char RKADK_U8;
typedef unsigned short RKADK_U16;
typedef unsigned int RKADK_U32;
typedef signed char RKADK_S8;
typedef short RKADK_S16;
typedef int RKADK_S32;
typedef unsigned long RKADK_UL;
typedef signed long RKADK_SL;
typedef float RKADK_FLOAT;
typedef double RKADK_DOUBLE;
#ifndef _M_IX86
typedef unsigned long long RKADK_U64;
typedef long long RKADK_S64;
#else
typedef unsigned __int64 RKADK_U64;
typedef __int64 RKADK_S64;
#endif
typedef char RKADK_CHAR;
#define RKADK_VOID void
typedef unsigned int RKADK_HANDLE;
typedef RKADK_VOID *RKADK_MW_PTR;
typedef char (*ARRAY_FILE_NAME)[RKADK_MAX_FILE_PATH_LEN];
typedef enum {
RKADK_FALSE = 0,
RKADK_TRUE = 1,
} RKADK_BOOL;
#ifndef NULL
#define NULL 0L
#endif
#define RKADK_NULL 0L
#define RKADK_SUCCESS 0
#define RKADK_FAILURE (-1)

2.3.2 RKADK_MW_PTR​

【说明】

定义任务指针

【定义】

typedef RKADK_VOID *RKADK_MW_PTR;

2.3.3 RKADK_MAX_SENSOR_CNT​

【说明】

定义支持的最大Sensor个数,可根据实际情况调整

【定义】

#define RKADK_MAX_SENSOR_CNT 3

2.3.4 RECORD_FILE_NUM_MAX​

【说明】

定义单个录像任务同时录制最大文件个数

【定义】

#define RECORD_FILE_NUM_MAX 2

2.3.5 MUXER_EVENT_E​

【说明】

定义录像事件枚举类型。

【定义】

typedef enum rkMUXER_EVENT_E {
MUXER_EVENT_STREAM_START = 0,
MUXER_EVENT_STREAM_STOP,
MUXER_EVENT_FILE_BEGIN,
MUXER_EVENT_FILE_END,
MUXER_EVENT_MANUAL_SPLIT_END,
MUXER_EVENT_ERR_CREATE_FILE_FAIL,
MUXER_EVENT_ERR_WRITE_FILE_FAIL,
MUXER_EVENT_BUTT
} MUXER_EVENT_E;

【成员】

成员名称描述
MUXER EVENT STREAM START _ _ _Reserved
MUXER EVENT STREAM STOP _ _ _Reserved
MUXER EVENT FILE BEGIN _ _ _开始录制一个新文件
MUXER EVENT FILE END _ _ _文件录制结束
MUXER EVENT MANUAL SPLIT END _ _ _ _手动切分文件录制结束
MUXER EVENT ERR CREATE FILE FAIL _ _ _ _ _Reserved
MUXER EVENT ERR WRITE FILE FAIL _ _ _ _ _Reserved

【相关数据类型及接口】

RKADK_REC_EVENT_INFO_S

2.3.6 MUXER_FILE_EVENT_INFO_S​

【说明】

定义文件相关事件信息结构体。

【定义】

typedef struct rkMUXER_FILE_EVENT_INFO_S {
RK_CHAR asFileName[MUXER_FILE_NAME_LEN];
RK_U32 u32Duration; // ms
} MUXER_FILE_EVENT_INFO_S;

【成员】

成员名称描述
asFileName文件名
u32Duration实际录制的文件时长

【相关数据类型及接口】

RKADK_REC_EVENT_INFO_S

2.3.7 RKADK_REC_EVENT_INFO_S​

【说明】

定义录像事件信息结构体。

【定义】

typedef struct rkMUXER_EVENT_INFO_S {
MUXER_EVENT_E enEvent;
union {
MUXER_FILE_EVENT_INFO_S stFileInfo;
MUXER_ERROR_EVENT_INFO_S stErrorInfo;
} unEventInfo;
} MUXER_EVENT_INFO_S;
typedef MUXER_EVENT_INFO_S RKADK_REC_EVENT_INFO_S;

【成员】

成员名称描述
enEvent录像事件类型
stFileInfo文件事件信息
stErrorInfo错误事件信息 (Reserved)

【相关数据类型及接口】

MUXER_EVENT_E

MUXER_FILE_EVENT_INFO_S

2.3.8 RKADK_REC_EVENT_CALLBACK_FN​

【说明】定义录像事件回调函数指针。

【定义】

typedef RKADK_VOID (*RKADK_REC_EVENT_CALLBACK_FN)(RKADK_MW_PTR pRecorder, const
RKADK_REC_EVENT_INFO_S *pstEventInfo);

【相关数据类型及接口】

RKADK_MW_PTR

RKADK_REC_EVENT_INFO_S

RKADK_RECORD_RegisterEventCallback

2.3.9 RKADK_REC_TYPE_E​

【说明】

定义录像类型枚举。

【定义】

typedef enum {
RKADK_REC_TYPE_NORMAL = 0, /* normal record */
RKADK_REC_TYPE_LAPSE, /* time lapse record */
RKADK_REC_TYPE_BUTT
} RKADK_REC_TYPE_E;

【成员】

成员名称描述
RKADK REC TYPE NORMAL _ _ _普通录像
RKADK REC TYPE LAPSE _ _ _缩时录像

【相关数据类型及接口】

RKADK_RECORD_ATTR_S

2.3.10 RKADK_REC_REQUEST_FILE_NAMES_FN​

【说明】

定义请求录像文件名回调函数指针。

【定义】

typedef RKADK_S32 (*RKADK_REC_REQUEST_FILE_NAMES_FN)(RKADK_MW_PTR pRecorder, RKADK_U32
u32FileCnt, RKADK_CHAR(*paszFilename)[RKADK_MAX_FILE_PATH_LEN]);

【成员】

成员名称描述
pRecorder录像任务指针
u32FileCnt请求文件名个数
paszFilename存储文件名buffer

【相关数据类型及接口】

RKADK_MW_PTR

RKADK_RECORD_ATTR_S

2.3.11 RKADK_RECORD_ATTR_S​

【说明】

定义录像任务属性结构体。

【定义】

typedef struct {
RKADK_S32 s32CamID; /* camera id */
RKADK_REC_TYPE_E enRecType; /* record type */
RKADK_REC_REQUEST_FILE_NAMES_FN pfnRequestFileNames; /* rec callbak */
} RKADK_RECORD_ATTR_S;

【成员】

成员名称描述
s32CamIDCamera id
enRecType录像类型
pfnRequestFileNames请求文件名函数指针

【相关数据类型及接口】

RKADK_REC_TYPE_E

RKADK_REC_REQUEST_FILE_NAMES_FN RKADK_RECORD_Create

2.3.12 MUXER_MANUAL_SPLIT_TYPE_E​

【说明】

定义手动切分类型。

【定义】

typedef enum {
MUXER_POST_MANUAL_SPLIT = 0, /* post maunal split type */
MUXER_PRE_MANUAL_SPLIT, /* pre manual split type */
MUXER_NORMAL_MANUAL_SPLIT, /* normal manual split type */
MUXER_MANUAL_SPLIT_BUTT
} MUXER_MANUAL_SPLIT_TYPE_E;

【成员】

成员名称描述
MUXER POST MANUAL SPLIT _ _ _Reserved
MUXER PRE MANUAL SPLIT _ _ _手动切分预录
MUXER NORMAL MANUAL SPLIT _ _ _Reserved

【相关数据类型及接口】

RKADK_REC_MANUAL_SPLIT_ATTR_S

2.3.13 MUXER_PRE_MANUAL_SPLIT_ATTR_S​

【说明】

定义手动切分预录结构体。

【定义】

typedef struct {
RK_U32 u32DurationSec; /* file duration of manual split file */
} MUXER_PRE_MANUAL_SPLIT_ATTR_S;

【成员】

成员名称描述
u32DurationSec手动切分录像文件时长

【相关数据类型及接口】

RKADK_REC_MANUAL_SPLIT_ATTR_S

2.3.14 RKADK_REC_MANUAL_SPLIT_ATTR_S​

【说明】

定义手动切分属性结构体。

【定义】

typedef struct {
MUXER_MANUAL_SPLIT_TYPE_E enManualType; /* maual split type */
union {
MUXER_POST_MANUAL_SPLIT_ATTR_S stPostSplitAttr; /* post manual split attr */
MUXER_PRE_MANUAL_SPLIT_ATTR_S stPreSplitAttr; /* pre manual split attr */
MUXER_NORMAL_MANUAL_SPLIT_ATTR_S stNormalSplitAttr; /* normal manual split attr */
};
} MUXER_MANUAL_SPLIT_ATTR_S;
typedef MUXER_MANUAL_SPLIT_ATTR_S RKADK_REC_MANUAL_SPLIT_ATTR_S;

【成员】

成员名称描述
enManualType手动切分类型
stPostSplitAttrReserved
stPreSplitAttr手动切分预录属性结构体
stNormalSplitAttrReserved

【相关数据类型及接口】

MUXER_MANUAL_SPLIT_TYPE_E

MUXER_PRE_MANUAL_SPLIT_ATTR_S

RKADK_RECORD_ManualSplit

3. 拍照​

3.1 概述​

提供基本的抓拍功能,提供JPEG封装拍照,支持单拍、多拍模式。

3.2 API 参考​

3.2.1 RKADK_PHOTO_Init​

拍照任务初始化。

RKADK_S32 RKADK_PHOTO_Init(RKADK_PHOTO_ATTR_S *pstPhotoAttr);
参数名称描述输入/输出
pstPhotoAttr拍照任务属性指针输入
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

不支持重复初始化。

rkadk_photo_test RKADK_PHOTO_DeInit

3.2.2 RKADK_PHOTO_DeInit​

拍照任务反初始化。

RKADK_S32 RKADK_PHOTO_DeInit(RKADK_U32 u32CamID);
参数名称描述输入/输出
u32CamIDCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

不支持重复反初始化。

rkadk_photo_test

RKADK_PHOTO_DeInit

3.2.3 RKADK_PHOTO_TakePhoto​

拍照。

RKADK_S32 RKADK_PHOTO_TakePhoto(RKADK_PHOTO_ATTR_S *pstPhotoAttr);
参数名称描述输入/输出
pstPhotoAttr拍照任务属性指针输入
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

录像任务初始化后,才能使用RKADK_PHOTO_TakePhoto 接口。

rkadk_photo_test

无

3.2.4 RKADK_PHOTO_GetThmInJpg​

从JPG文件中获取缩略图数据。

RKADK_S32 RKADK_PHOTO_GetThmInJpg(RKADK_CHAR *pszFileName, RKADK_JPG_THUMB_TYPE_E eThmType, RKADK_U8 *pu8Buf, RKADK_U32 *pu32Size);

参数名称描述输入/输出
pszFileNameJPG文件路径输入
eThmType缩略图类型输入
pu8Buf缩略图数据指针输出
pu32Size输入:pu8Buf长度,输出:实际缩略图数据长度输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

rkadk_thumb_test

无

3.2.5 RKADK_PHOTO_GetThmInJpgEx​

JPG获取缩略图扩展接口,从JPG文件中获取缩略图数据,支持指定输出缩略图的类型和分辨率。必须和RKADK_PHOTO_ThumbBufFree配套使用。

RKADK_S32 RKADK_PHOTO_GetThmInJpgEx(RKADK_CHAR *pszFileName, RKADK_JPG_THUMB_TYPE_E eThmType, RKADK_THUMB_ATTR_S *pstThumbAttr);

参数名称描述输入/输出
pszFileNameJPG文件路径输入
eThmType缩略图类型输入
pstThumbAttr缩略图属性结构体指针输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

rkadk_thumb_test

RKADK_PHOTO_ThumbBufFree

3.2.6 RKADK_PHOTO_ThumbBufFree​

释放RKADK_PHOTO_GetThmInJpgEx申请的内存。必须和RKADK_PHOTO_GetThmInJpgEx配套使用。

RKADK_S32 RKADK_PHOTO_ThumbBufFree(RKADK_THUMB_ATTR_S *pstThumbAttr);
参数名称描述输入/输出
pstThumbAttr缩略图属性结构体指针输入
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

rkadk_thumb_test

RKADK_PHOTO_GetThmInJpgEx

3.2.7 RKADK_PHOTO_GetData​

获取JPG数据,默认输出JPG原始分辨率。

RKADK_S32 RKADK_PHOTO_GetData(RKADK_CHAR *pcFileName, RKADK_PHOTO_DATA_ATTR_S *pstDataAttr);

参数名称描述输入/输出
pstDataAttrJPG数据属性结构体指针输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_photo.h rkadk_photo_test

RKADK_PHOTO_FreeData

3.2.8 RKADK_PHOTO_FreeData​

释放RKADK_PHOTO_GetData申请的内存。必须和RKADK_PHOTO_GetData配套使用。

RKADK_S32 RKADK_PHOTO_FreeData(RKADK_PHOTO_DATA_ATTR_S *pstDataAttr);
参数名称描述输入/输出
pstDataAttrJPG数据属性结构体指针输入
返回值描述
0成功
非0失败

头文件:rkadk_photo.h

rkadk_photo_test

RKADK_PHOTO_GetData

3.3 数据类型​

拍照模块主要提供以下数据类型:

RKADK_PHOTO_TYPE_E:拍照类型枚举RKADK_PHOTO_SINGLE_ATTR_S:单拍属性结构体

RKADK_PHOTO_MULTIPLE_ATTR_S:多拍属性结构体

RKADK_PHOTO_DATA_RECV_FN_PTR:拍照数据接收函数指针

RKADK_PHOTO_ATTR_S:拍照任务属性结构体

RKADK_JPG_THUMB_TYPE_E:JPG缩略图类型枚举

RKADK_THUMB_TYPE_E:输出缩略图类型枚举

RKADK_THUMB_ATTR_S:缩略图属性结构体

RKADK_PHOTO_DATA_ATTR_S:JPG数据属性结构体

3.3.1 RKADK_PHOTO_TYPE_E​

【说明】

定义拍照类型枚举。

【定义】

typedef enum {
RKADK_PHOTO_TYPE_SINGLE = 0,
RKADK_PHOTO_TYPE_MULTIPLE,
RKADK_PHOTO_TYPE_LAPSE, // TODO
RKADK_PHOTO_TYPE_BUTT
} RKADK_PHOTO_TYPE_E;

【成员】

成员名称描述
RKADK PHOTO TYPE SINGLE _ _ _单拍模式
RKADK PHOTO TYPE MULTIPLE _ _ _多拍模式
RKADK PHOTO TYPE LAPSE _ _ _缩时拍照(Reserved)

【相关数据类型及接口】

RKADK_PHOTO_ATTR_S

3.3.2 RKADK_PHOTO_SINGLE_ATTR_S​

【说明】

定义单拍属性结构体。【定义】

typedef struct {
// TODO
RKADK_S32 s32Time_sec;
} RKADK_PHOTO_SINGLE_ATTR_S;

【成员】

成员名称描述
s32Time sec _Reserved

【相关数据类型及接口】

RKADK_PHOTO_ATTR_S

3.3.3 RKADK_PHOTO_MULTIPLE_ATTR_S​

【说明】

定义多拍属性结构体。

【定义】

typedef struct {
/* s32Count is -1 that means continuous photo, larger than 0 that meas photo
* number */
RKADK_S32 s32Count;
} RKADK_PHOTO_MULTIPLE_ATTR_S;

【成员】

成员名称描述
s32Count连拍数量,-1 代表连续拍照直到调用RKADK PHOTO DeInit停止 _ _

【相关数据类型及接口】

RKADK_PHOTO_ATTR_S

3.3.4 RKADK_PHOTO_THUMB_ATTR_S​

【说明】

定义缩略图参数属性结构体。【定义】

#define RKADK_MPF_LARGE_THUMB_NUM_MAX 2 /* 支持同时生成的最大MPF缩略图个数 */
typedef struct rkSIZE_S {
RK_U32 u32Width; /* 缩略图宽 */
RK_U32 u32Height; /* 缩略图高 */
} SIZE_S;
typedef enum {
RKADK_PHOTO_MPF_SINGLE = 0, /* 单个MPF缩略图 */
RKADK_PHOTO_MPF_MULTI, /* 多个MPF缩略图 */
RKADK_PHOTO_MPF_BUTT
} RKADK_PHOTO_MPF_MODE_E;
typedef struct {
RKADK_U8 u8LargeThumbNum; /* 生成的MPF缩略图个数 */
SIZE_S astLargeThumbSize[RKADK_MPF_LARGE_THUMB_NUM_MAX]; /* 各缩略图分辨率 */
} RKADK_PHOTO_MPF_CFG_S;
typedef struct {
RKADK_PHOTO_MPF_MODE_E eMode; /* MPF缩略图模式 */
RKADK_PHOTO_MPF_CFG_S sCfg; /* MPF缩略图配置 */
} RKADK_PHOTO_MPF_ATTR_S;
typedef struct {
RKADK_BOOL bSupportDCF; /* Fixed resolution: 160 * 120 jpg */
RKADK_PHOTO_MPF_ATTR_S stMPFAttr;
} RKADK_PHOTO_THUMB_ATTR_S;

【成员】

成员名称描述
bSupportDCF是否生成DCF缩略图(固定分辨率160*120)
stMPFAttrMPF缩略图属性参数

【相关数据类型及接口】

RKADK_PHOTO_ATTR_S

3.3.5 RKADK_PHOTO_DATA_RECV_FN_PTR​

【说明】

定义拍照数据接收函数指针。

【定义】

typedef void (*RKADK_PHOTO_DATA_RECV_FN_PTR)(RKADK_U8 *pu8DataBuf,
RKADK_U32 u32DataLen);

【成员】

成员名称描述
pu8DataBuf数据指针
u32DataLen数据长度

【相关数据类型及接口】

RKADK_PHOTO_ATTR_S

3.3.6 RKADK_PHOTO_ATTR_S​

【说明】

定义拍照任务属性结构体。

【定义】

typedef struct {
RKADK_U32 u32CamID;
RKADK_PHOTO_TYPE_E enPhotoType;
union tagPhotoTypeAttr {
RKADK_PHOTO_SINGLE_ATTR_S stSingleAttr;
RKADK_PHOTO_LAPSE_ATTR_S stLapseAttr; // TODO
RKADK_PHOTO_MULTIPLE_ATTR_S stMultipleAttr;
} unPhotoTypeAttr;
RKADK_PHOTO_THUMB_ATTR_S stThumbAttr;
RKADK_PHOTO_DATA_RECV_FN_PTR pfnPhotoDataProc;
} RKADK_PHOTO_ATTR_S;

【成员】

成员名称描述
u32CamIDCamera id
RKADK PHOTO TYPE E _ _ _拍照类型
stSingleAttr单拍参数属性
stMultipleAttr多拍参数属性
stLapseAttr缩时拍照参数属性(Reserved)
stThumbAttr缩略图参数属性
pfnPhotoDataProc拍照数据接收回调函数指针

【相关数据类型及接口】

RKADK_PHOTO_TYPE_E

RKADK_PHOTO_SINGLE_ATTR_S

RKADK_PHOTO_MULTIPLE_ATTR_S

RKADK_PHOTO_THUMB_ATTR_S

RKADK_PHOTO_DATA_RECV_FN_PTR

RKADK_PHOTO_Init

RKADK_PHOTO_TakePhoto

3.3.7 RKADK_JPG_THUMB_TYPE_E​

【说明】

定义JPG缩略图类型枚举。

【定义】

typedef enum {
RKADK_JPG_THUMB_TYPE_DCF,
RKADK_JPG_THUMB_TYPE_MFP1,
RKADK_JPG_THUMB_TYPE_MFP2,
RKADK_JPG_THUMB_TYPE_BUTT
} RKADK_JPG_THUMB_TYPE_E;

【成员】

成员名称描述
RKADK JPG THUMB TYPE DCF _ _ _ _DCF缩略图
RKADK JPG THUMB TYPE MFP1 _ _ _ _MPF1缩略图
RKADK JPG THUMB TYPE MFP2 _ _ _ _MPF2缩略图

【相关数据类型及接口】

RKADK_PHOTO_GetThmInJpg

RKADK_PHOTO_GetThmInJpgEx

3.3.8 RKADK_THUMB_TYPE_E​

【说明】

定义输出缩略图类型枚举。

【定义】

typedef enum {
RKADK_THUMB_TYPE_NV12 = 0,
RKADK_THUMB_TYPE_JPEG,
RKADK_THUMB_TYPE_RGB565,
RKADK_THUMB_TYPE_RGB888,
RKADK_THUMB_TYPE_RGBA8888
} RKADK_THUMB_TYPE_E;

【成员】

成员名称描述
RKADK THUMB TYPE NV12 _ _ _输出NV12格式缩略图
RKADK THUMB TYPE JPEG _ _ _输出JPG格式缩略图
RKADK THUMB TYPE RGB565 _ _ _输出RGB565格式缩略图
RKADK THUMB TYPE RGB888 _ _ _输出RGB888格式缩略图
RKADK THUMB TYPE RGBA8888 _ _ _输出RGB8888格式缩略图

【相关数据类型及接口】

RKADK_THUMB_ATTR_S

RKADK_GetThmInMp4Ex RKADK_PHOTO_GetThmInJpgEx

3.3.9 RKADK_THUMB_ATTR_S​

【说明】

定义缩略图属性结构体。

【定义】

typedef struct {
RKADK_THUMB_TYPE_E enType;
// 4 alignment
RKADK_U32 u32Width;
// 2 alignment
RKADK_U32 u32Height;
// 4 alignment
RKADK_U32 u32VirWidth;
// 2 alignment
RKADK_U32 u32VirHeight;
RKADK_U8 *pu8Buf;
RKADK_U32 u32BufSize;
} RKADK_THUMB_ATTR_S;

【成员】

成员名称描述
enType希望获取的缩略图类型
u32Width输入希望获取的缩略图宽,输出实际缩略图宽
u32Height输入希望获取的缩略图高,输出实际缩略图高
u32VirWidth输入希望获取的缩略图虚宽,输出实际缩略图虚宽
u32VirHeight输入希望获取的缩略图虚高,输出实际缩略图虚高
pu8Buf缩略图数据指针
u32BufSize缩略图数据长度

【相关数据类型及接口】

RKADK_THUMB_TYPE_E

RKADK_GetThmInMp4Ex

RKADK_PHOTO_GetThmInJpgEx

3.3.10 RKADK_PHOTO_DATA_ATTR_S​

【说明】

定义缩略图属性结构体。

【定义】

typedef RKADK_THUMB_ATTR_S RKADK_PHOTO_DATA_ATTR_S;

【相关数据类型及接口】

RKADK_THUMB_ATTR_S

RKADK_PHOTO_GetData

RKADK_PHOTO_FreeData

4. 远程预览​

4.1 概述​

为预览提供获取Video和Audio信息,启停VENC,启停AENC ,注册处理音视频帧数据函数的回调接口。

4.2 API参考​

4.2.1 RKADK_STREAM_VideoInit​

初始化Video模块:VI、VENC。

RKADK_S32 RKADK_STREAM_VideoInit(RKADK_U32 u32CamID, RKADK_CODEC_TYPE_E enCodecType);
参数名称描述输入/输出
u32CamIDCamera id输入
enCodecType编码类型输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

不支持重复初始化Video模块。rkadk_stream_test

RKADK_STREAM_VideoDeInit

4.2.2 RKADK_STREAM_VideoDeInit​

反初始化Video模块:VI、VENC。

RKADK_S32 RKADK_STREAM_VideoDeInit(RKADK_U32 u32CamID);
参数名称描述输入/输出
u32CamIDCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无

rkadk_stream_test

RKADK_STREAM_VideoInit

4.2.3 RKADK_STREAM_VencStart​

启动VENC。

RKADK_S32 RKADK_STREAM_VencStart(RKADK_U32 u32CamID, RKADK_CODEC_TYPE_E enCodecType, RKADK_S32 s32FrameCnt);

参数名称描述输入/输出
u32CamIDCamera id输入
enCodecType编码类型输入
s32FrameCnt指定需要接收的图像帧数,-1 代表无限接收,直到调用VencStop为止输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

初始化Video模块后,才能调用RKADK_STREAM_VencStart接口。调用RKADK_STREAM_VencStart后,触发VENC数据回调函数开始接收数据。

rkadk_stream_test

RKADK_STREAM_VencStop

4.2.4 RKADK_STREAM_VencStop​

停止VENC。

RKADK_S32 RKADK_STREAM_VencStop(RKADK_U32 u32CamID);
参数名称描述输入/输出
u32CamIDCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无

rkadk_stream_test

RKADK_STREAM_VencStart

4.2.5 RKADK_STREAM_GetVideoInfo​

获取Video信息。

RKADK_S32 RKADK_STREAM_GetVideoInfo(RKADK_U32 u32CamID, RKADK_VIDEO_INFO_S *pstVideoInfo);
参数名称描述输入/输出
u32CamIDCamera id输入
pstVideoInfoVideo 信息结构体指针输出
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无

rkadk_stream_test

无

4.2.6 RKADK_STREAM_VencRegisterCallback​

注册Video数据输出回调。

RKADK_S32 RKADK_STREAM_VencRegisterCallback(RKADK_U32 u32CamID, RKADK_VENC_DATA_PROC_FUNC pfnDataCB);

参数名称描述输入/输出
u32CamIDCamera id输入
pfnDataCB数据输出回调函数输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

回调函数不能处理耗时操作,否则数据流将被阻塞。

rkadk_stream_test

RKADK_STREAM_VencUnRegisterCallback

4.2.7 RKADK_STREAM_VencUnRegisterCallback​

反注册Video数据输出回调。

RKADK_S32 RKADK_STREAM_VencUnRegisterCallback(RKADK_U32 u32CamID);
参数名称描述输入/输出
u32CamIDCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无rkadk_stream_test

RKADK_STREAM_VencRegisterCallback

4.2.8 RKADK_STREAM_AudioInit​

初始化Audio模块:AI、AENC。

RKADK_S32 RKADK_STREAM_AudioInit(RKADK_CODEC_TYPE_E enCodecType);
参数名称描述输入/输出
enCodecType编码类型输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

不支持重复初始化Audio模块。

rkadk_stream_test

RKADK_STREAM_AudioDeInit

4.2.9 RKADK_STREAM_AudioDeInit​

反初始化Audio模块:AI、AENC。

RKADK_S32 RKADK_STREAM_AudioDeInit(RKADK_CODEC_TYPE_E enCodecType);
参数名称描述输入/输出
enCodecType编码类型输入
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无

rkadk_stream_test

RKADK_STREAM_AudioInit

4.2.10 RKADK_STREAM_AencStart​

启动AENC。

RKADK_S32 RKADK_STREAM_AencStart();

无

返回值描述
0成功
非0失败

头文件:rkadk_stream.h

初始化Audio模块后,才能调用RKADK_STREAM_AencStart接口。调用RKADK_STREAM_AencStart后,触发AENC数据回调函数开始接收数据。

rkadk_stream_test

RKADK_STREAM_AencStop

4.2.11 RKADK_STREAM_AencStop​

停止AENC。

RKADK_S32 RKADK_STREAM_AencStop();

无

返回值描述
0成功
非0失败

头文件:rkadk_stream.h无

rkadk_stream_test

RKADK_STREAM_AencStart

4.2.12 RKADK_STREAM_GetAudioInfo​

获取Audio信息。

RKADK_S32 RKADK_STREAM_GetAudioInfo(RKADK_AUDIO_INFO_S *pstAudioInfo);
参数名称描述输入/输出
pstAudioInfoAudio 信息结构体指针输出
返回值描述
0成功
非0失败

头文件:rkadk_stream.h

无

rkadk_stream_test

无

4.2.13 RKADK_STREAM_AencRegisterCallback​

注册Audio数据输出回调。

RKADK_VOID RKADK_STREAM_AencRegisterCallback(RKADK_CODEC_TYPE_E enCodecType, RKADK_AENC_DATA_PROC_FUNC pfnDataCB);

参数名称描述输入/输出
enCodecType编码类型输入
pfnDataCB数据输出回调函数输入

无

头文件:rkadk_stream.h

回调函数不能处理耗时操作,否则数据流将被阻塞。允许同时注册两个回调,同时获取PCM和AENC音频流,通过enCodecType 区分。

rkadk_stream_test

RKADK_STREAM_AencUnRegisterCallback

4.2.14 RKADK_STREAM_AencUnRegisterCallback​

反注册Audio数据输出回调。

RKADK_VOID RKADK_STREAM_AencUnRegisterCallback(RKADK_CODEC_TYPE_E enCodecType);
参数名称描述输入/输出
enCodecType编码格式输入

无

头文件:rkadk_stream.h

无

rkadk_stream_test

RKADK_STREAM_AencRegisterCallback

4.3 数据类型​

播放模块主要提供以下数据类型:

RKADK_CODEC_TYPE_E:编码格式枚举

RKADK_VENC_DATA_PROC_FUNC:VENC数据回调函数指针

RKADK_VIDEO_STREAM_S:Video数据流结构体

RKADK_VENC_DATA_PACK_S:VENC数据包结构体

RKADK_VENC_DATA_TYPE_S:VENC数据包类型

RKADK_VIDEO_INFO_S:Video信息结构体

RKADK_AENC_DATA_PROC_FUNC:AENC数据回调函数指针

RKADK_AUDIO_STREAM_S:Audio数据结构体

RKADK_AUDIO_INFO_S:Audio信息结构体

4.3.1 RKADK_CODEC_TYPE_E​

【说明】

定义编码格式枚举类型,Audio编码默认不支持MP3和AAC。【定义】

typedef enum {
//Video
RKADK_CODEC_TYPE_H264 = 0,
RKADK_CODEC_TYPE_H265,
RKADK_CODEC_TYPE_MJPEG,
RKADK_CODEC_TYPE_JPEG,
//Audio
RKADK_CODEC_TYPE_MP3,
RKADK_CODEC_TYPE_G711A,
RKADK_CODEC_TYPE_G711U,
RKADK_CODEC_TYPE_G726,
RKADK_CODEC_TYPE_MP2,
RKADK_CODEC_TYPE_PCM,
RKADK_CODEC_TYPE_BUTT
} RKADK_CODEC_TYPE_E;

4.3.2 RKADK_VENC_DATA_PROC_FUNC​

【说明】

定义VENC数据回调函数指针。

【定义】

typedef RKADK_S32 (*RKADK_VENC_DATA_PROC_FUNC)(RKADK_VIDEO_STREAM_S *pVStreamData);

【相关数据类型及接口】

RKADK_VIDEO_STREAM_S

RKADK_STREAM_VencRegisterCallback

4.3.3 RKADK_VIDEO_STREAM_S​

【说明】

定义Video 数据流结构体。

【定义】

typedef struct {
RKADK_VENC_DATA_PACK_S astPack; /* stream pack attribute */
RKADK_U32 u32Seq; /* the list number of stream */
RKADK_BOOL bEndOfStream; /* frame end flag */
} RKADK_VIDEO_STREAM_S;

【成员】

成员名称描述
astPack数据包结构体
u32Seq数据包序列号
bEndOfStreamReserved

【相关数据类型及接口】

RKADK_VENC_DATA_PACK_S

RKADK_VENC_DATA_PROC_FUNC

4.3.4 RKADK_VENC_DATA_PACK_S​

【说明】

定义VENC数据包结构体。

【定义】

typedef struct {
RKADK_U8 *apu8Addr; /* the virtual address of stream */
RKADK_U32 au32Len; /* the length of stream */
RKADK_U64 u64PTS; /* time stamp */
RKADK_VENC_DATA_TYPE_S stDataType; /* the type of stream */
} RKADK_VENC_DATA_PACK_S;

【成员】

成员名称描述
apu8Addr数据指针
au32Len数据长度
u64PTS时间戳
stDataType数据类型

【相关数据类型及接口】

RKADK_VENC_DATA_TYPE_S

RKADK_VIDEO_STREAM_S

4.3.5 RKADK_VENC_DATA_TYPE_S​

【说明】

定义VENC数据包类型。

【定义】

/* the nalu type of H264 */
typedef enum {
RKADK_H264E_NALU_BSLICE = 0, /* B SLICE types */
RKADK_H264E_NALU_PSLICE = 1, /* P SLICE types */
RKADK_H264E_NALU_ISLICE = 2, /* I SLICE types */
RKADK_H264E_NALU_IDRSLICE = 5, /* IDR SLICE types */
RKADK_H264E_NALU_SEI = 6, /* SEI types */
RKADK_H264E_NALU_SPS = 7, /* SPS types */
RKADK_H264E_NALU_PPS = 8, /* PPS types */
RKADK_H264E_NALU_BUTT
} RKADK_H264E_NALU_TYPE_E;
/* the nalu type of H265 */
typedef enum {
RKADK_H265E_NALU_BSLICE = 0, /* B SLICE types */
RKADK_H265E_NALU_PSLICE = 1, /* P SLICE types */
RKADK_H265E_NALU_ISLICE = 2, /* I SLICE types */
RKADK_H265E_NALU_IDRSLICE = 19, /* IDR SLICE types */
RKADK_H265E_NALU_VPS = 32, /* VPS types */
RKADK_H265E_NALU_SPS = 33, /* SPS types */
RKADK_H265E_NALU_PPS = 34, /* PPS types */
RKADK_H265E_NALU_SEI = 39, /* SEI types */
RKADK_H265E_NALU_BUTT
} RKADK_H265E_NALU_TYPE_E;
typedef struct {
RKADK_CODEC_TYPE_E enPayloadType; /* H.264/H.265/JPEG/MJPEG */
union {
RKADK_H264E_NALU_TYPE_E enH264EType; /* H264E NALU types */
RKADK_H265E_NALU_TYPE_E enH265EType; /* H265E NALU types */
RKADK_JPEGE_PACK_TYPE_E enJPEGEType; /* TODO: JPEGE PACK types*/
};
} RKADK_VENC_DATA_TYPE_S;

【成员】

成员名称描述
enPayloadType编码类型
enH264ETypeH264 编码数据包类型
enH265ETypeH265 编码数据包类型
enJPEGETypeReserved

【相关数据类型及接口】

RKADK_CODEC_TYPE_E

RKADK_VENC_DATA_PACK_S

4.3.6 RKADK_VIDEO_INFO_S​

【说明】

定义Video信息结构体。

【定义】

typedef struct {
RKADK_CODEC_TYPE_E enCodecType;
RKADK_U32 u32Width;
RKADK_U32 u32Height;
RKADK_U32 u32BitRate;
RKADK_U32 u32FrameRate;
RKADK_U32 u32Gop;
} RKADK_VIDEO_INFO_S;

【成员】

成员名称描述
enPayloadType编码类型
u32Width分辨率宽度
u32Height分辨率高度
u32BitRate比特率
u32FrameRate帧率
u32GopI 帧间隔

【相关数据类型及接口】

RKADK_CODEC_TYPE_E

RKADK_STREAM_GetVideoInfo

4.3.7 RKADK_AENC_DATA_PROC_FUNC​

【说明】

定义AENC数据回调函数指针。

【定义】

typedef RKADK_S32 (*RKADK_AENC_DATA_PROC_FUNC)(RKADK_AUDIO_STREAM_S *pAStreamData);

【相关数据类型及接口】

RKADK_AUDIO_STREAM_S

RKADK_STREAM_AencRegisterCallback

4.3.8 RKADK_AUDIO_STREAM_S​

【说明】

定义Audio数据流结构体。

【定义】

typedef struct {
RKADK_U8 *pStream; /* the virtual address of stream */
RKADK_U32 u32Len; /* stream lenth, by bytes */
RKADK_U64 u64TimeStamp; /* frame time stamp */
RKADK_U32 u32Seq; /* frame seq, if stream is not a valid frame,u32Seq is 0 */
} RKADK_AUDIO_STREAM_S;

【成员】

成员名称描述
pStream数据指针
u32Len数据长度
u64TimeStamp时间戳
u32Seq序列号

【相关数据类型及接口】

RKADK_AENC_DATA_PROC_FUNC

4.3.9 RKADK_AUDIO_INFO_S​

【说明】

定义Audio信息结构体。

【定义】

typedef struct {
RKADK_CODEC_TYPE_E enCodecType;
RKADK_U32 u32ChnCnt;
RKADK_U32 u32SampleRate;
RKADK_U32 u32AvgBytesPerSec;
RKADK_U32 u32SamplesPerFrame;
RKADK_U16 u16SampleBitWidth;
} RKADK_AUDIO_INFO_S;

【成员】

成员名称描述
enPayloadType编码类型
u32ChnCntt通道数
u32SampleRate采样率
u32AvgBytesPerSec字节率
u32SamplesPerFrame每一帧采样数
u16SampleBitWidth每个样本比特数

【相关数据类型及接口】

RKADK_CODEC_TYPE_E

RKADK_STREAM_GetAudioInfo

5. 播放器​

5.1 概述​

提供本地录像文件和音频文件播放功能,支持基本的播控操作:播放、暂停、 Seek 。

5.2 API 参考​

5.2.1 RKADK_PLAYER_Create​

创建播放器。

RKADK_S32 RKADK_PLAYER_Create(RKADK_MW_PTR *ppPlayer, RKADK_PLAYER_CFG_S *pstPlayCfg);
参数名称描述输入/输出
ppPlayer创建的播放器指针输出
pstPlayCfg播放器属性输入
返回值描述
0成功
非0失败

头文件:rkadk_player.h

不支持重复创建同一播放器。rkadk_player_test

RKADK_PLAYER_Destroy

5.2.2 RKADK_PLAYER_Destroy​

销毁播放器。

RKADK_S32 RKADK_PLAYER_Destroy(RKADK_MW_PTR pPlayer);
参数名称描述输入/输出
pPlayer播放器指针输人
返回值描述
0成功
非0失败

头文件:rkadk_player.h

不支持重复销毁同一播放器。

rkadk_player_test

RKADK_PLAYER_Create

5.2.3 RKADK_PLAYER_SetDataSource​

设置待播放文件路径。

RKADK_S32 RKADK_PLAYER_SetDataSource(RKADK_MW_PTR pPlayer, const RKADK_CHAR *pszfilePath);
参数名称描述输入/输出
pPlayer播放器指针输人
pszfilePath待播放文件路径输入
返回值描述
0成功
非0失败

头文件:rkadk_player.h

创建播放器后,才能调用RKADK_PLAYER_SetDataSource接口。

rkadk_player_test

无

5.2.4 RKADK_PLAYER_Prepare​

播放准备。

RKADK_S32 RKADK_PLAYER_Prepare(RKADK_MW_PTR pPlayer);
参数名称描述输入/输出
pPlayer播放器指针输人
返回值描述
0成功
非0失败

头文件:rkadk_player.h

创建播放器和设置播放路径后,才能调用RKADK_PLAYER_Prepare接口。

rkadk_player_test

无

5.2.5 RKADK_PLAYER_SetVideoSink​

注册视频播放回调对象,播放音频不需要调用该接口。

RKADK_S32 RKADK_PLAYER_SetVideoSink(RKADK_MW_PTR pPlayer, RKADK_PLAYER_FRAMEINFO_S *pstFrameInfo);

参数名称描述输入/输出
pPlayer播放器指针输人
pstFrameInfo图像信息结构体输入
返回值描述
0成功
非0失败

头文件:rkadk_player.h

无

rkadk_player_test

无

5.2.6 RKADK_PLAYER_Play​

开始播放。

RKADK_S32 RKADK_PLAYER_Play(RKADK_MW_PTR pPlayer);
参数名称描述输入/输出
pPlayer播放器指针输人
返回值描述
0成功
非0失败

头文件:rkadk_player.h调用RKADK_PLAYER_Prepare 后,才能调用RKADK_PLAYER_Play接口。

rkadk_player_test

RKADK_PLAYER_Stop

5.2.7 RKADK_PLAYER_Stop​

停止播放,并释放资源。

RKADK_S32 RKADK_PLAYER_Stop(RKADK_MW_PTR pPlayer);
参数名称描述输入/输出
pPlayer播放器指针输人
返回值描述
0成功
非0失败

头文件:rkadk_player.h

无

rkadk_player_test RKADK_PLAYER_Play

5.2.8 RKADK_PLAYER_Pause​

暂停播放。

RKADK_S32 RKADK_PLAYER_Pause(RKADK_MW_PTR pPlayer);
参数名称描述输入/输出
pPlayer播放器指针输人
返回值描述
0成功
非0失败

头文件:rkadk_player.h

无

rkadk_player_test

RKADK_PLAYER_Play

5.2.9 RKADK_PLAYER_Seek​

Seek。

RKADK_S32 RKADK_PLAYER_Seek(RKADK_MW_PTR pPlayer, RKADK_S64 s64TimeInMs);
参数名称描述输入/输出
pPlayer播放器指针输人
s64TimeInMsSeek 时长输入
返回值描述
0成功
非0失败

头文件:rkadk_player.h

调用RKADK_PLAYER_Play后,才能调用RKADK_PLAYER_Seek接口。

rkadk_player_test

RKADK_PLAYER_Play

5.2.10 RKADK_PLAYER_GetPlayStatus​

获取当前播放状态。

RKADK_S32 RKADK_PLAYER_GetPlayStatus(RKADK_MW_PTR pPlayer, RKADK_PLAYER_STATE_E *penState);
参数名称描述输入/输出
pPlayer播放器指针输人
penState当前播放状态输出
返回值描述
0成功
非0失败

头文件:rkadk_player.h

无

rkadk_player_test

无

5.2.11 RKADK_PLAYER_GetDuration​

获取当前播放文件时长。

RKADK_S32 RKADK_PLAYER_GetDuration(RKADK_MW_PTR pPlayer, RKADK_U32 *pDuration);
参数名称描述输入/输出
pPlayer播放器指针输人
pDuration当前播放文件时长,单位ms输出
返回值描述
0成功
非0失败

头文件:rkadk_player.h

无

rkadk_player_test

无

5.3 数据类型​

播放模块主要提供以下数据类型:

RKADK_PLAYER_EVENT_E:播放事件枚举类型

RKADK_PLAYER_EVENT_FN:播放事件回调函数指针

RKADK_PLAYER_CFG_S:播放器属性结构体

RKADK_PLAYER_VO_FORMAT_E:图像像素格式枚举类型

RKADK_PLAYER_VO_DEV_E:显示输出设备号枚举类型

RKADK_PLAYER_VO_INTF_TYPE_E:显示接口枚举类型

RKADK_PLAYER_FRAMEINFO_S:图像信息结构体

RKADK_PLAYER_STATE_E:播放状态枚举类型

RKADK_PLAYER_VO_ATTR_S:视频输出属性结构体

5.3.1 RKADK_PLAYER_EVENT_E​

【说明】

定义播放事件枚举类型。【定义】

typedef enum {
RKADK_PLAYER_EVENT_STATE_CHANGED = 0x0,
RKADK_PLAYER_EVENT_PREPARED,
RKADK_PLAYER_EVENT_STARTED,
RKADK_PLAYER_EVENT_PAUSED,
RKADK_PLAYER_EVENT_STOPPED,
RKADK_PLAYER_EVENT_EOF,
RKADK_PLAYER_EVENT_SOF,
RKADK_PLAYER_EVENT_PROGRESS,
RKADK_PLAYER_EVENT_SEEK_END,
RKADK_PLAYER_EVENT_ERROR,
RKADK_PLAYER_EVENT_BUTT
} RKADK_PLAYER_EVENT_E;

【成员】

成员名称描述
RKADK PLAYER EVENT STATE CHANGED _ _ _ _状态改变(Reserved)
RKADK PLAYER EVENT PREPARED _ _ _Prepared 完成
RKADK PLAYER EVENT STARTED _ _ _开始播放
RKADK PLAYER EVENT PAUSED _ _ _暂停播放
RKADK PLAYER EVENT STOPPED _ _ _停止播放
RKADK PLAYER EVENT EOF _ _ _播放结束
RKADK PLAYER EVENT SOF _ _ _Reserved
RKADK PLAYER EVENT PROGRESS _ _ _播放进度,附加值为当前播放时间,单位ms
RKADK PLAYER EVENT SEEK END _ _ _ _Seek 完成
RKADK PLAYER EVENT ERROR _ _ _播放错误

【相关数据类型及接口】

RKADK_PLAYER_EVENT_FN

5.3.2 RKADK_PLAYER_EVENT_FN​

【说明】

定义播放事件回调函数指针。

【定义】

typedef RKADK_VOID (*RKADK_PLAYER_EVENT_FN)(RKADK_MW_PTR pPlayer, RKADK_PLAYER_EVENT_E
enEvent, RKADK_VOID *pData);

【成员】

成员名称描述
pPlayer播放器指针
enEvent事件类型
pData事件相关参数

【相关数据类型及接口】

RKADK_PLAYER_EVENT_E

RKADK_PLAYER_CFG_S

5.3.3 RKADK_PLAYER_CFG_S​

【说明】

定义播放器属性结构体。

【定义】

typedef struct {
RKADK_BOOL bEnableVideo;
RKADK_BOOL bEnableAudio;
RKADK_PLAYER_EVENT_FN pfnPlayerCallback;
} RKADK_PLAYER_CFG_S;

【成员】

成员名称描述
bEnableVideoReserved
bEnableAudioReserved
pfnPlayerCallback播放事件回调函数指针

【相关数据类型及接口】

RKADK_PLAYER_EVENT_FN

RKADK_PLAYER_Create

5.3.4 RKADK_PLAYER_VO_FORMAT_E​

【说明】

定义图像像素格式枚举类型。

【定义】

typedef enum {
VO_FORMAT_ARGB8888 = 0,
VO_FORMAT_ABGR8888,
VO_FORMAT_RGB888,
VO_FORMAT_BGR888,
VO_FORMAT_ARGB1555,
VO_FORMAT_ABGR1555,
VO_FORMAT_NV12,
VO_FORMAT_NV21
} RKADK_PLAYER_VO_FORMAT_E;

【相关数据类型及接口】

RKADK_PLAYER_FRAMEINFO_S

5.3.5 RKADK_PLAYER_VO_DEV_E​

【说明】

定义显示输出设备号枚举类型。

【定义】

typedef enum {
VO_DEV_HD0 = 0,
VO_DEV_HD1
} RKADK_PLAYER_VO_DEV_E;

【成员】

成员名称描述
VO DEV HD0 _ _显示输出设备0
VO DEV HD1 _ _显示输出设备1

【相关数据类型及接口】

RKADK_PLAYER_FRAMEINFO_S

5.3.6 RKADK_PLAYER_VO_INTF_TYPE_E​

【说明】

定义显示接口枚举类型。

【定义】

typedef enum {
DISPLAY_TYPE_HDMI = 0,
DISPLAY_TYPE_EDP,
DISPLAY_TYPE_VGA,
DISPLAY_TYPE_MIPI,
} RKADK_PLAYER_VO_INTF_TYPE_E;

【成员】

成员名称描述
DISPLAY TYPE HDMI _ _显示接口为HDMI
DISPLAY TYPE EDP _ _显示接口为EDP
DISPLAY TYPE VGA _ _显示接口为VGA
DISPLAY TYPE MIPI _ _显示接口为MIPI

【相关数据类型及接口】

RKADK_PLAYER_FRAMEINFO_S

5.3.7 RKADK_PLAYER_VO_ATTR_S​

【说明】

定义视频输出属性结构体。

【定义】

typedef struct {
RKADK_BOOL bMirror;
RKADK_BOOL bFlip;
RKADK_U32 u32Rotation;
RKADK_RECT_S stChnRect;
} RKADK_PLAYER_VO_ATTR_S;

【成员】

成员名称描述
bMirror视频镜像
bFlip视频翻转
u32Rotation视频旋转:0, 90, 180, 270
stChnRect视频输出显示区域

【相关数据类型及接口】

RKADK_PLAYER_FRAMEINFO_S

5.3.8 RKADK_PLAYER_FRAMEINFO_S​

【说明】

定义图像信息结构体。

【定义】

typedef struct {
RKADK_U32 u32FrmInfoS32x;
RKADK_U32 u32FrmInfoS32y;
RKADK_U32 u32DispWidth;
RKADK_U32 u32DispHeight;
RKADK_U32 u32ImgWidth;
RKADK_U32 u32ImgHeight;
RKADK_U32 u32VoLayerMode;
RKADK_U32 u32ChnnNum;
RKADK_U32 u32BorderColor;
RKADK_U32 u32BorderTopWidth;
RKADK_U32 u32BorderBottomWidth;
RKADK_U32 u32BorderLeftWidth;
RKADK_U32 u32BorderRightWidth;
RKADK_PLAYER_VO_CHNN_MODE_E u32EnMode;
RKADK_PLAYER_VO_FORMAT_E u32VoFormat;
RKADK_PLAYER_VO_DEV_E u32VoDev;
RKADK_PLAYER_VO_INTF_TYPE_E u32EnIntfType;
RKADK_U32 u32DispFrmRt;
VO_INTF_SYNC_E enIntfSync;
VO_SYNC_INFO_S stSyncInfo;
RKADK_PLAYER_VO_ATTR_S stVoAttr;
} RKADK_PLAYER_FRAMEINFO_S;

【成员】

成员名称描述
u32FrmInfoS32xLayer显示区域x坐标
u32FrmInfoS32yLayer显示区域y坐标
u32DispWidthLayer显示区域宽度
u32DispHeightLayer显示区域高度
u32ImgWidthLayer画布宽度
u32ImgHeightLayer画布高度
u32VoLayerMode定义图层类型
u32ChnnNum视频输出通道号,取值范围:[0, VO MAX CHN NUM(128)] _ _ _
u32BorderColor视频输出通道边框属性:颜色(Reserved)
u32BorderTopWidth视频输出通道边框属性:上边框宽(Reserved)
u32BorderBottomWidth视频输出通道边框属性:下边框宽(Reserved)
u32BorderLeftWidth视频输出通道边框属性:左边框宽(Reserved)
u32BorderRightWidth视频输出通道边框属性:右边框宽(Reserved)
u32EnMode画面高宽比模式(Reserved)
u32VoFormat定义图像像素格式
u32VoDev定义输出设备
u32EnIntfType设置显示接口类型
u32DispFrmRt设置分辨率
enIntfSync设置屏幕接口同步模式
stSyncInfo屏幕属性结构体
stVoAttr视频输出属性结构体

视频输出相关属性具体可参考Rockit VO文档Rockchip_Developer_Guide_MPI_VO.pdf。视频镜像、翻转、旋转、显示区域通过stVoAttr设置;不支持同时设置Mirrot/Flip 和 Rotation,设置Mirrot/Flip后,Rotation将失效。Layer显示区域建议不设置,使用默认值。

【相关数据类型及接口】

RKADK_PLAYER_VO_FORMAT_E RKADK_PLAYER_VO_DEV_E

RKADK_PLAYER_VO_INTF_TYPE_E

RKADK_PLAYER_VO_ATTR_S

RKADK_PLAYER_SetVideoSink

5.3.9 RKADK_PLAYER_STATE_E​

【说明】

定义播放状态枚举类型。

【定义】

typedef enum {
RKADK_PLAYER_STATE_IDLE = 0, /* The player state before init */
RKADK_PLAYER_STATE_INIT, /* The player is in the initial state. It changes
to the initial state after being SetDataSource */
RKADK_PLAYER_STATE_PREPARED, /* The player is in the prepared state */
RKADK_PLAYER_STATE_PLAY, /* The player is in the playing state */
RKADK_PLAYER_STATE_TPLAY, /* The player is in the trick playing state, Reserved */
RKADK_PLAYER_STATE_PAUSE, /* The player is in the pause state */
RKADK_PLAYER_STATE_ERR, /* The player is in the err state */
RKADK_PLAYER_STATE_BUTT
} RKADK_PLAYER_STATE_E;

【相关数据类型及接口】

RKADK_PLAYER_GetPlayStatus

6. 直播​

6.1 概述​

提供标准RTSP直播流的基本服务;提供RTMP直播服务。RTSP和RTMP不支持同时启动。

6.2 API参考​

6.2.1 RTSP​

6.2.1.1 RKADK_RTSP_Init

初始化RTSP模块。

RKADK_S32 RKADK_RTSP_Init(RKADK_U32 u32CamId, RKADK_U32 port, const char *path, RKADK_MW_PTR *ppHandle);

参数名称描述输入/输出
u32CamIdCamera id输入
port端口号输入
pathRTSP地址输入
ppHandle创建的RTSP Handle输出
返回值描述
0成功
非0失败

头文件:rkadk_rtsp.h

RKADK_RTSP_Init 后调用RKADK_RTSP_Start 启动RTSP直播推流。

rkadk_rtsp_test

RKADK_RTSP_DeInit

6.2.1.2 RKADK_RTSP_DeInit

反初始化RTSP模块。

RKADK_S32 RKADK_RTSP_DeInit(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle创建的RTSP Handle输入
返回值描述
0成功
非0失败

头文件:rkadk_rtsp.h

rkadk_rtsp_test

RKADK_RTSP_Init 6.2.1.3 RKADK_RTSP_Start

启动RTSP直播。

RKADK_S32 RKADK_RTSP_Start(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle创建的RTSP Handle输入
返回值描述
0成功
非0失败

头文件:rkadk_rtsp.h

RKADK_RTSP_Init 后调用该接口。

rkadk_rtsp_test

RKADK_RTSP_Stop

6.2.1.4 RKADK_RTSP_Stop

停止RTSP直播。

RKADK_S32 RKADK_RTSP_Stop(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle创建的RTSP Handle输入
返回值描述
0成功
非0失败

头文件:rkadk_rtsp.h

rkadk_rtsp_test

RKADK_RTSP_Start

6.2.2 RTMP​

6.2.2.1 RKADK_RTMP_Init

初始化RTMP模块。

RKADK_S32 RKADK_RTMP_Init(RKADK_U32 u32CamId, const char *path, RKADK_MW_PTR *ppHandle);
参数名称描述输入/输出
u32CamIdCamera id输入
pathRTMP地址输入
ppHandle创建的RTMP Handle输出
返回值描述
0成功
非0失败

头文件:rkadk_rtmp.h

rkadk_rtmp_test

RKADK_RTMP_DeInit

6.2.2.2 RKADK_RTMP_DeInit

反初始化RTMP模块。

RKADK_S32 RKADK_RTMP_DeInit(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle创建的RTMP Handle输入
返回值描述
0成功
非0失败

头文件:rkadk_rtmp.h rkadk_rtmp_test

RKADK_RTMP_Init

7. 存储​

7.1 概述​

提供基本的存储功能,目前包含如下功能:

文件检测、存储、获取、管理设备容量和状态查询自动删除文件格式化

7.2 API参考​

7.2.1 RKADK_STORAGE_Init​

存储模块初始化。

RKADK_S32 RKADK_STORAGE_Init(RKADK_MW_PTR *ppHandle, RKADK_STR_DEV_ATTR *pstDevAttr);
参数名称描述输入/输出
ppHandle创建的存储模块句柄输出
pstDevAttr挂载设备属性指针输入
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

不支持重复初始化。RKADK_STR_DEV_ATTR传入NULL使用默认属性,默认属性为:2个文件夹、命名为video_front和video_back、以文件名排序、自动删除阈值500~1000M、不使用文件个数限制、限制比例为50%。

rkadk_storage_test

RKADK_STORAGE_Deinit

7.2.2 RKADK_STORAGE_Deinit​

存储模块反初始化。

RKADK_S32 RKADK_STORAGE_Deinit(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle存储模块句柄指针输入
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

不支持重复反初始化。rkadk_storage_test

RKADK_STORAGE_Init

7.2.3 RKADK_STORAGE_GetDevAttr​

获取挂载设备属性。

RKADK_STR_DEV_ATTR RKADK_STORAGE_GetDevAttr(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle存储模块句柄指针输入
返回值描述
RKADK STR DEV ATTR _ _ _挂载设备属性结构体

头文件:rkadk_storage.h

存储模块初始化后,才能使用RKADK_STORAGE_GetDevAttr接口。

无

无

7.2.4 RKADK_STORAGE_GetMountStatus​

获取设备挂载状态。

RKADK_MOUNT_STATUS RKADK_STORAGE_GetMountStatus(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle存储模块句柄指针输入
返回值描述
RKADK MOUNT STATUS _ _挂载状态枚举类型

头文件:rkadk_storage.h

rkadk_storage_test

无

7.2.5 RKADK_STORAGE_GetCapacity​

获取设备容量。

RKADK_S32 RKADK_STORAGE_GetCapacity(RKADK_MW_PTR *ppHandle, RKADK_S32 *totalSize, RKADK_S32 *freeSize);

参数名称描述输入/输出
ppHandle创建的存储模块句柄输入/输出
totalSize设备总容量指针输出
freeSize设备剩余容量指针输出
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

rkadk_storage_test

无

7.2.6 RKADK_STORAGE_GetFileList​

获取文件列表。

RKADK_S32 RKADK_STORAGE_GetFileList(RKADK_FILE_LIST *list, RKADK_MW_PTR pHandle, RKADK_SORT_TYPE sort);

参数名称描述输入/输出
list文件列表结构体指针输入/输出
pHandle存储模块句柄指针输入
sort排序类型输入
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

必须和RKADK_STORAGE_FreeFileList配套使用。

rkadk_storage_test

RKADK_STORAGE_FreeFileList

7.2.7 RKADK_STORAGE_FreeFileList​

释放文件列表。

RKADK_S32 RKADK_STORAGE_FreeFileList(RKADK_FILE_LIST *list);
参数名称描述输入/输出
list文件列表结构体指针输入/输出
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

必须和RKADK_STORAGE_GetFileList配套使用。rkadk_storage_test

RKADK_STORAGE_GetFileList

7.2.8 RKADK_STORAGE_GetFileNum​

获取文件数量。

RKADK_S32 RKADK_STORAGE_GetFileNum(RKADK_CHAR *fileListPath, RKADK_MW_PTR pHandle);
参数名称描述输入/输出
fileListPath文件列表路径指针输入
pHandle存储模块句柄指针输入
返回值描述
非负文件数量
-1失败

头文件:rkadk_storage.h

无

无

7.2.9 RKADK_STORAGE_GetDevPath​

获取挂载设备路径。

RKADK_CHAR *RKADK_STORAGE_GetDevPath(RKADK_MW_PTR pHandle);
参数名称描述输入/输出
pHandle存储模块句柄指针输入
返回值描述
RKADK CHAR * _挂载设备路径指针

头文件:rkadk_storage.h

存储模块初始化后,才能使用RKADK_STORAGE_GetDevPath接口。

rkadk_storage_test

无

7.2.10 RKADK_STORAGE_Format​

设备格式化。

RKADK_S32 RKADK_STORAGE_Format(RKADK_MW_PTR pHandle, RKADK_CHAR *cFormat);
参数名称描述输入/输出
pHandle存储模块句柄指针输入
cFormat文件系统类型输入
返回值描述
0成功
非0失败

头文件:rkadk_storage.h

无

无

7.3 数据类型​

存储模块主要提供以下数据类型:

RKADK_MOUNT_STATUS:挂载状态枚举类型

RKADK_SORT_TYPE:排序类型枚举

RKADK_SORT_CONDITION:排序条件枚举类型

RKADK_STR_FOLDER_ATTR:文件夹属性结构体

RKADK_STR_DEV_ATTR:设备属性结构体

RKADK_FILE_INFO:文件信息结构体

RKADK_FILE_LIST:文件列表结构体

RKADK_FILE_LIST_ARRAY:文件列表组结构体

7.3.1 RKADK_MOUNT_STATUS​

【说明】

定义挂载状态枚举类型。

【定义】

typedef enum {
DISK_UNMOUNTED = 0,
DISK_NOT_FORMATTED,
DISK_FORMAT_ERR,
DISK_SCANNING,
DISK_MOUNTED,
DISK_MOUNT_BUTT,
} RKADK_MOUNT_STATUS;

【成员】

成员名称描述
DISK UNMOUNTED _磁盘未挂载
DISK NOT FORMATTED _ _磁盘未格式化
DISK FORMAT ERR _ _磁盘格式化错误
DISK SCANNING _磁盘正在扫描中
DISK MOUNTED _磁盘已挂载

【相关数据类型及接口】

RKADK_STORAGE_GetMountStatus

7.3.2 RKADK_SORT_TYPE​

【说明】

定义排序类型枚举。

【定义】

typedef enum {
LIST_ASCENDING = 0,
LIST_DESCENDING,
LIST_BUTT,
} RKADK_SORT_TYPE;

【成员】

成员名称描述
LIST ASCENDING _列表以升序排序
LIST DESCENDING _列表以降序排序

【相关数据类型及接口】

RKADK_STORAGE_GetFileList

7.3.3 RKADK_SORT_CONDITION​

【说明】

定义排序条件枚举类型。

【定义】

typedef enum {
SORT_MODIFY_TIME = 0,
SORT_FILE_NAME,
SORT_BUTT,
} RKADK_SORT_CONDITION;

【成员】

成员名称描述
SORT MODIFY TIME _ _列表以文件修改时间排序
SORT FILE NAME _ _列表以文件名排序

【相关数据类型及接口】

RKADK_STR_FOLDER_ATTR

7.3.4 RKADK_STR_FOLDER_ATTR​

【说明】

定义文件夹属性结构体。

【定义】

typedef struct {
RKADK_CHAR cFolderPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_SORT_CONDITION s32SortCond;
RKADK_BOOL bNumLimit;
RKADK_S32 s32Limit;
} RKADK_STR_FOLDER_ATTR;

【成员】

成员名称描述
cFolderPath文件夹路径
s32SortCond排序条件
bNumLimit选项:是否以文件个数设置上限
s32Limit文件夹容量上限(比例/个数)

【相关数据类型及接口】

RKADK_SORT_CONDITION

RKADK_STR_DEV_ATTR

7.3.5 RKADK_STR_DEV_ATTR​

【说明】

定义设备属性结构体。

【定义】

typedef struct {
RKADK_CHAR cDevPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_CHAR cMountPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_S32 s32FreeSizeDelMin;
RKADK_S32 s32FreeSizeDelMax;
RKADK_S32 s32AutoDel;
RKADK_S32 s32FolderNum;
RKADK_CHAR cFormatId[RKADK_MAX_FORMAT_ID_LEN];
RKADK_CHAR cVolume[RKADK_MAX_VOLUME_LEN];
RKADK_S32 s32CheckFormatId;
RKADK_STR_FOLDER_ATTR *pstFolderAttr;
} RKADK_STR_DEV_ATTR;

【成员】

成员名称描述
cDevPath设备名(设备路径)
cMountPath设备挂载路径
s32FreeSizeDelMin自动删除阈值下限
s32FreeSizeDelMax自动删除阈值上限
s32AutoDel自动删除选项
s32FolderNum文件夹个数
cFormatId格式化ID
cVolume卷标
s32CheckFormatId检测格式化ID是否匹配
pstFolderAttr文件夹属性结构体指针

【相关数据类型及接口】

RKADK_STR_FOLDER_ATTR

RKADK_STORAGE_Init

RKADK_STORAGE_GetDevAttr

7.3.6 RKADK_FILE_INFO​

【说明】

定义文件信息结构体。

【定义】

typedef struct {
RKADK_CHAR filename[RKADK_MAX_FILE_PATH_LEN];
off_t stSize;
time_t stTime;
void *thumb;
} RKADK_FILE_INFO;

【成员】

成员名称描述
filename文件名
stSize文件大小
stTime文件修改时间
thumb缩略图指针

【相关数据类型及接口】

RKADK_FILE_LIST

7.3.7 RKADK_FILE_LIST​

【说明】

定义文件列表结构体。

【定义】

typedef struct {
RKADK_CHAR path[RKADK_MAX_FILE_PATH_LEN];
RKADK_S32 s32FileNum;
RKADK_FILE_INFO *file;
} RKADK_FILE_LIST;

【成员】

成员名称描述
path文件列表(文件夹)路径
s32FileNum文件个数
file文件信息结构体指针

【相关数据类型及接口】

RKADK_FILE_INFO

RKADK_FILE_LIST_ARRAY

7.3.8 RKADK_FILE_LIST_ARRAY​

【说明】定义文件列表组结构体。

【定义】

typedef struct {
RKADK_S32 s32ListNum;
RKADK_FILE_LIST *list;
} RKADK_FILE_LIST_ARRAY;

【成员】

成员名称描述
s32ListNum文件列表(文件夹)个数
list文件列表结构体指针

【相关数据类型及接口】

RKADK_FILE_LIST

8. 本地预览​

8.1 概述​

提供本地预览功能。

8.2 API参考​

8.2.1 RKADK_DISP_Init​

初始化本地预览模块。

RKADK_S32 RKADK_DISP_Init(RKADK_U32 u32CamId);
参数名称描述输入/输出
u32CamIdCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_disp.h

rkadk_disp_test

RKADK_DISP_DeInit

8.2.2 RKADK_DISP_DeInit​

反初始化本地预览模块。

RKADK_S32 RKADK_DISP_DeInit(RKADK_U32 u32CamId);
参数名称描述输入/输出
u32CamIdCamera id输入
返回值描述
0成功
非0失败

头文件:rkadk_disp.h rkadk_disp_test

RKADK_DISP_Init

9. VI ISP API​

9.1 概述​

VI ISP模块是对ISP模块的再次封装,记录ISP上下文环境,方便应用层使用。本章节只介绍RKADK_VI_ISP_Start和 RKADK_VI_ISP_Stop,其他API具体用法参考docs/RV1126_RV1109/Camera/Rockchip_Development_Guide_ISP2x_CN_v1.6.3.pdf。

9.2 API参考​

9.2.1 RKADK_VI_ISP_Start​

启动ISP。

int RKADK_VI_ISP_Start(RKADK_U32 u32CamId, rk_aiq_working_mode_t WDRMode, bool bMultiCam, const char *iq_file_dir, int fps);

参数名称描述输入/输出
u32CamIdCamera Id输入
WDRModeAIQ pipeline工作模式 ,详情参考ISP文档输入
bMultiCam是否多Sensor输入
iq file dir _ _AIQ文件路径输入
fps帧率输入
返回值描述
0成功
非0失败

头文件:rkadk_vi_isp.h

除Player模块外,其他任一模块启动之前,都必须先调用RKADK_VI_ISP_Start启动ISP。支持重复调用RKADK_VI_ISP_Start。必须和RKADK_VI_ISP_Stop配套使用,每调用一次RKADK_VI_ISP_Sart,必须对应调用一次RKADK_VI_ISP_Stop。

rkadk_record_test

rkadk_photo_test

rkadk_stream_test

rkadk_rtsp_test

rkadk_rtmp_test

rkadk_disp_test

RKADK_VI_ISP_Stop

9.2.2 RKADK_VI_ISP_Stop​

停止ISP。

int RKADK_VI_ISP_Stop(RKADK_U32 u32CamId);
参数名称描述输入/输出
u32CamIdCamera Id输入
返回值描述
0成功
非0失败

头文件:rkadk_vi_isp.h

支持重复调用RKADK_VI_ISP_Stop。必须和RKADK_VI_ISP_Start配套使用,每调用一次RKADK_VI_ISP_Sart,必须对应调用一次RKADK_VI_ISP_Stop。

rkadk_record_test

rkadk_photo_test

rkadk_stream_test

rkadk_rtsp_test

rkadk_rtmp_test

rkadk_disp_test

RKADK_VI_ISP_Start

10. 参数设置​

10.1 概述​

参数设置模块与产品形态强相关,通过组合使用通用组件数据结构,定义出适合产品形态的数据结构。

该模块支持获取指定参数,支持保存指定参数,支持参数恢复默认。

为方便编辑,参数以ini文件形式存放。

10.2 API参考​

10.2.1 RKADK_PARAM_Init​

初始化参数模块

RKADK_S32 RKADK_PARAM_Init(char *globalSetting, char **sesnorSettingArrary);
参数名称描述输入/输出
globalSetting全局ini配置文件路径输入
sesnorSettingArrarySensor ini配置文件路径输入
返回值描述
0成功
非0失败

头文件:rkadk_param.h

启动任一模块之前,都必须先调用RKADK_PARAM_Init初始化参数模块。如果没有设置globalSetting,则使用默认路径RKADK_PARAM_PATH。如果没有设置sesnorSettingArrary,则使用默认路径RKADK_PARAM_PATH_SENSOR_PREFIX,Sensor 配置文件前缀默认rkadk_setting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。

rkadk_record_test

无

10.2.2 RKADK_PARAM_GetCamParam​

获取Camera相关的参数。

RKADK_S32 RKADK_PARAM_GetCamParam(RKADK_S32 s32CamID, RKADK_PARAM_TYPE_E enParamType, RKADK_VOID *pvParam);

参数名称描述输入/输出
s32CamIDCamera id输入
enParamType参数类型输入
pvParam获取到的参数指针输出
返回值描述
0成功
非0失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

rkadk_record_test

RKADK_PARAM_SetCamParam

10.2.3 RKADK_PARAM_SetCamParam​

设置Camera相关的参数。

RKADK_S32 RKADK_PARAM_SetCamParam(RKADK_S32 s32CamID, RKADK_PARAM_TYPE_E enParamType, const RKADK_VOID *pvParam);

参数名称描述输入/输出
s32CamIDCamera id输入
enParamType参数类型输入
pvParam设置的参数指针输入
返回值描述
0成功
非0失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

rkadk_record_test

RKADK_PARAM_GetCamParam

10.2.4 RKADK_PARAM_GetCommParam​

获取普通参数。

RKADK_S32 RKADK_PARAM_GetCommParam(RKADK_PARAM_TYPE_E enParamType, RKADK_VOID *pvParam);

参数名称描述输入/输出
enParamType参数类型输入
pvParam获取到的参数指针输出
返回值描述
0成功
非0失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

rkadk_record_test

RKADK_PARAM_SetCommParam

10.2.5 RKADK_PARAM_SetCommParam​

设置普通参数。

RKADK_S32 RKADK_PARAM_SetCommParam(RKADK_PARAM_TYPE_E enParamType, const RKADK_VOID *pvParam);

参数名称描述输入/输出
enParamType参数类型输入
pvParam设置的参数指针输入
返回值描述
0成功
非0失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

rkadk_record_test

RKADK_PARAM_GetCommParam

10.2.6 RKADK_PARAM_SetDefault​

恢复默认配置。

RKADK_S32 RKADK_PARAM_SetDefault(RKADK_VOID);
返回值描述
0成功
非0失败

头文件:rkadk_param.h

10.2.7 RKADK_PARAM_GetResolution​

RKADK_PARAM_RES_E 转换为具体分辨率。

RKADK_S32 RKADK_PARAM_GetResolution(RKADK_PARAM_RES_E type, RKADK_U32 *width, RKADK_U32 *height);

参数名称描述输入/输出
type分辨率类型输入
width转换的分辨率宽输出
height转换的分辨率高输出
返回值描述
0成功
非0失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

无

RKADK_PARAM_GetResType

10.2.8 RKADK_PARAM_GetResType​

分辨率转换为RKADK_PARAM_RES_E。

RKADK_PARAM_RES_E RKADK_PARAM_GetResType(RKADK_U32 width, RKADK_U32 height);
参数名称描述输入/输出
width分辨率宽输入
height分辨率高输入
返回值描述
对应的RKADK PARAM RES E _ _ _成功
RKADK RES BUTT _ _失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

无

RKADK_PARAM_GetResolution

10.2.9 RKADK_PARAM_GetVencChnId​

获取Record、Photo、Stream 对应的VENC通道号。

RKADK_S32 RKADK_PARAM_GetVencChnId(RKADK_U32 u32CamId, RKADK_STREAM_TYPE_E enStrmType);
参数名称描述输入/输出
u32CamIdCamera id输入
enStrmType流类型输入
返回值描述
对应的VENC通道号成功
-1失败

头文件:rkadk_param.h

调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。

无

无

10.3 数据类型​

参数模块主要提供以下数据类型:

RKADK_DEFPARAM_PATH:默认全局ini配置文件路径

RKADK_DEFPARAM_PATH_SENSOR_PREFIX:默认Sensor ini配置文件路径

RKADK_PARAM_PATH:全局ini配置文件路径

RKADK_PARAM_PATH_SENSOR_PREFIX:Sensor ini配置文件路径

RKADK_PARAM_TYPE_E:参数类型枚举

RKADK_PARAM_RES_E:分辨率类型枚举

RKADK_STREAM_TYPE_E:流类型枚举

RKADK_PARAM_CODEC_CFG_S:编码类型配置结构体

RKADK_PARAM_BITRATE_S:比特率配置结构体

RKADK_PARAM_REC_TIME_S:录像时长配置结构体

RKADK_PARAM_GOP_S:VENC GOP配置结构体

RKADK_VQE_MODE_E:音频输入声音质量增强枚举

MUXER_TYPE_E:录像文件类型枚举

MUXER_PRE_RECORD_MODE_E:预录模式枚举

10.3.1 RKADK_DEFPARAM_PATH​

【说明】

默认全局ini配置文件路径,存放各Sensor共用的配置,用于恢复默认配置。

【定义】

#define RKADK_DEFPARAM_PATH "/etc/rkadk/rkadk_defsetting.ini"

10.3.2 RKADK_DEFPARAM_PATH_SENSOR_PREFIX​

【说明】

默认Sensor ini配置文件路径,存放各Sensor独有的配置,用于恢复默认配置。

【定义】

#define RKADK_DEFPARAM_PATH_SENSOR_PREFIX "/etc/rkadk/rkadk_defsetting_sensor"

Sensor配置文件前缀默认rkadk_defsetting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。

10.3.3 RKADK_PARAM_PATH​

【说明】

全局ini配置文件路径,存放各Sensor共用的配置。

【定义】

#define RKADK_PARAM_PATH "/data/rkadk/rkadk_setting.ini"

10.3.4 RKADK_PARAM_PATH_SENSOR_PREFIX​

【说明】

Sensor ini配置文件路径,存放各Sensor独有的配置。用于保存切换录像分辨率、Codec类型等操作时的新配置。

【定义】

#define RKADK_PARAM_PATH_SENSOR_PREFIX "/data/rkadk/rkadk_setting_sensor"

Sensor 配置文件前缀默认rkadk_setting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。

10.3.5 RKADK_PARAM_TYPE_E​

【说明】

定义参数类型枚举类型。

【定义】

typedef enum {
/* Cam Dependent Param */
RKADK_PARAM_TYPE_FPS, /* framerate */
RKADK_PARAM_TYPE_GOP, /* gop */
RKADK_PARAM_TYPE_RES, /* specify RKADK_PARAM_RES_E(record) */
RKADK_PARAM_TYPE_PHOTO_RES, /* specify RKADK_PARAM_RES_E(photo) */
RKADK_PARAM_TYPE_CODEC_TYPE, /* specify RKADK_PARAM_CODEC_CFG_S(record) */
RKADK_PARAM_TYPE_BITRATE, /* encode bitrate,specify RKADK_PARAM_BITRATE_S */
RKADK_PARAM_TYPE_FLIP, /* bool */
RKADK_PARAM_TYPE_MIRROR, /* bool */
RKADK_PARAM_TYPE_LDC, /* ldc level [0,255] */
RKADK_PARAM_TYPE_ANTIFOG, /* antifog value, [0,10] */
RKADK_PARAM_TYPE_WDR, /* wdr level, [0,10] */
RKADK_PARAM_TYPE_HDR, /* 0: normal, 1: HDR2, 2: HDR3, [0,2] */
RKADK_PARAM_TYPE_REC, /* record enable, bool*/
RKADK_PARAM_TYPE_RECORD_TYPE, /* specify RKADK_REC_TYPE_E */
RKADK_PARAM_TYPE_RECORD_TIME, /* specify RKADK_PARAM_REC_TIME_S, record time(s) */
RKADK_PARAM_TYPE_PRE_RECORD_TIME, /* pre record time, unit in second(s) */
RKADK_PARAM_TYPE_PRE_RECORD_MODE, /* pre record mode, specify MUXER_PRE_RECORD_MODE_E
*/
RKADK_PARAM_TYPE_SPLITTIME, /* specify RKADK_PARAM_REC_TIME_S, manual splite
time(s) */
RKADK_PARAM_TYPE_FILE_CNT, /* record file count, maximum RECORD_FILE_NUM_MAX */
RKADK_PARAM_TYPE_LAPSE_INTERVAL, /* specify RKADK_PARAM_REC_TIME_S, lapse interval(s)
*/
RKADK_PARAM_TYPE_LAPSE_MULTIPLE, /* lapse multiple */
RKADK_PARAM_TYPE_PHOTO_ENABLE, /* photo enable, bool*/
RKADK_PARAM_TYPE_SNAP_NUM, /* continue snap num */
/* COMM Dependent Param */
RKADK_PARAM_TYPE_REC_UNMUTE, /* record audio mute, bool */
RKADK_PARAM_TYPE_AUDIO, /* speaker enable, bool */
RKADK_PARAM_TYPE_VOLUME, /* speaker volume, [0,100] */
RKADK_PARAM_TYPE_MIC_UNMUTE, /* mic(mute) enable, bool */
RKADK_PARAM_TYPE_MIC_VOLUME, /* mic volume, [0,100] */
RKADK_PARAM_TYPE_OSD, /* show osd or not, bool */
RKADK_PARAM_TYPE_OSD_TIME_FORMAT, /* osd format for time */
RKADK_PARAM_TYPE_BOOTSOUND, /* boot sound enable, bool */
RKADK_PARAM_TYPE_OSD_SPEED, /* speed osd enable, bool */
RKADK_PARAM_TYPE_BUTT
} RKADK_PARAM_TYPE_E;

【成员】

成员名称描述
RKADK PARAM TYPE FPS _ _ _帧率
RKADK PARAM TYPE GOP _ _ _I帧间隔,RKADK PARAM GOP S _ _ _
RKADK PARAM TYPE RES _ _ _录像分辨率,RKADK PARAM RES E _ _ _
RKADK PARAM TYPE PHOTO RES _ _ _ _拍照分辨率,RKADK PARAM RES E _ _ _
RKADK PARAM TYPE CODEC TYPE _ _ _ _录像编码类型,RKADK PARAM CODEC CFG S _ _ _ _
RKADK PARAM TYPE BITRATE _ _ _比特率,RKADK PARAM BITRATE S _ _ _
RKADK PARAM TYPE FLIP _ _ _上下翻转
RKADK PARAM TYPE MIRROR _ _ _左右镜像
RKADK PARAM TYPE LDC _ _ _畸变校正[0,255]
RKADK PARAM TYPE ANTIFOG _ _ _去雾[0,10]
RKADK PARAM TYPE WDR _ _ _宽动态[0,10]
RKADK PARAM TYPE HDR _ _ _高动态范围成像[0,10]
RKADK PARAM TYPE REC _ _ _是否开机录像
RKADK PARAM TYPE RECORD TYPE _ _ _ _录像类型,RKADK REC TYPE E _ _ _
RKADK PARAM TYPE RECORD TIME _ _ _ _录像时长,录像主码流、子码流支持设置不同时长, RKADK PARAM REC TIME S _ _ _ _
RKADK PARAM TYPE PRE RECORD TIME _ _ _ _ _预录时长
RKADK PARAM TYPE PRE RECORD MODE _ _ _ _ _预录模式,0:不预录,1:手动切分预录,2:首文件预 录,3:所有文件预录
RKADK PARAM TYPE SPLITTIME _ _ _手动切分录像时长,录像主码流、子码流支持设置不同时 长,RKADK PARAM REC TIME S _ _ _ _
RKADK PARAM TYPE FILE CNT _ _ _ _同时录制文件个数,最大2
RKADK PARAM TYPE LAPSE INTERVAL _ _ _ _缩时录像时长,录像主码流、子码流支持设置不同时长, RKADK PARAM REC TIME S _ _ _ _
RKADK PARAM TYPE LAPSE MULTIPLE _ _ _ _缩时录像文件播放时长与实际画面内容时间的倍数关系
RKADK PARAM TYPE PHOTO ENABLE _ _ _ _是否开机启动拍照
RKADK PARAM TYPE SNAP NUM _ _ _ _单次拍照张数
RKADK PARAM TYPE REC UNMUTE _ _ _ _是否使能录像静音
RKADK PARAM TYPE AUDIO _ _ _是否使能Speaker
RKADK PARAM TYPE VOLUME _ _ _Speaker音量[0,100]
RKADK PARAM TYPE MIC UNMUTE _ _ _ _是否使能麦克风
成员名称描述
RKADK PARAM TYPE MIC VOLUME _ _ _ _麦克风音量[0,100]
RKADK PARAM TYPE OSD _ _ _是否显示水印
RKADK PARAM TYPE OSD TIME FORMAT _ _ _ _ _水印时间格式
RKADK PARAM TYPE OSD SPEED _ _ _ _是否显示速度水印
RKADK PARAM TYPE BOOTSOUND _ _ _是否播放开机音乐

Flip、Mirror、Antifog、WDR、HDR等Camere 硬件相关设置,在调用RKADK_PARAM_SetCamParam 之前需要先调用VI ISP API对应接口设置。RKADK_PARAM_TYPE_LAPSE_MULTIPLE:缩时录像文件播放时长与实际画面内容时间的倍数关系,跟帧率有关,比如普通录像帧率是30fps,缩时录影是1fps,则倍数是30。切换分辨率时,当Photo分辨率未设置为Sensor最大支持分辨率时,需和Record 主码流分辨率保持一致。RKADK_PARAM_TYPE_REC_UNMUTE:和RKADK_RECORD_GetAencChn、RK_MPI_AENC_SetMute搭配使用。RKADK_PARAM_TYPE_FPS:和RKADK_VI_ISP_SET_FrameRate、RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetFps搭配使用。RK_MPI_VENC_SetFps说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。RKADK_PARAM_TYPE_GOP:和RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetGop搭配使用。RK_MPI_VENC_SetGop说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。RKADK_PARAM_TYPE_BITRATE:和RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetBitrate搭配使用。RK_MPI_VENC_SetBitrate说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。

【相关数据类型及接口】

RKADK_PARAM_GetCamParam

RKADK_PARAM_SetCamParam

RKADK_PARAM_GetCommParam

RKADK_PARAM_SetCommParam

10.3.6 RKADK_PARAM_RES_E​

【说明】

定义播放事件枚举类型。

【定义】

typedef enum {
RKADK_RES_720P = 0, /* 1280*720 */
RKADK_RES_1080P, /* 1920*1080 */
RKADK_RES_1296P, /* 2340*1296 */
RKADK_RES_1440P, /* 2560*1440 */
RKADK_RES_1520P, /* 2688*1520 */
RKADK_RES_1600P, /* 2560*1600 */
RKADK_RES_1620P, /* 2880*1620 */
RKADK_RES_1944P, /* 2592*1944 */
RKADK_RES_2160P, /* 3840*2160 */
RKADK_RES_BUTT,
} RKADK_PARAM_RES_E;

【相关数据类型及接口】

RKADK_PARAM_GetResolution

RKADK_PARAM_GetResType

10.3.7 RKADK_STREAM_TYPE_E​

【说明】

定义流枚举类型。

【定义】

typedef enum {
RKADK_STREAM_TYPE_VIDEO_MAIN,
RKADK_STREAM_TYPE_VIDEO_SUB,
RKADK_STREAM_TYPE_SNAP,
RKADK_STREAM_TYPE_PREVIEW,
RKADK_STREAM_TYPE_LIVE,
RKADK_STREAM_TYPE_DISP,
RKADK_STREAM_TYPE_BUTT
} RKADK_STREAM_TYPE_E;

【成员】

成员名称描述
RKADK STREAM TYPE VIDEO MAIN _ _ _ _录像主码流
RKADK STREAM TYPE VIDEO SUB _ _ _ _录像子码流
RKADK STREAM TYPE SNAP _ _ _拍照
RKADK STREAM TYPE PREVIEW _ _ _远程预览
RKADK STREAM TYPE LIVE _ _ _直播
RKADK STREAM TYPE DISP _ _ _本地预览

【相关数据类型及接口】

RKADK_PARAM_GetVencChnId

10.3.8 RKADK_PARAM_CODEC_CFG_S​

【说明】

定义编码类型配置结构体。

【定义】

typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_CODEC_TYPE_E enCodecType;
} RKADK_PARAM_CODEC_CFG_S;

【成员】

成员名称描述
enStreamType流类型
enCodecType编码类型

【相关数据类型及接口】

RKADK_CODEC_TYPE_E

RKADK_STREAM_TYPE_E

10.3.9 RKADK_PARAM_BITRATE_S​

【说明】定义比特率配置结构体。

【定义】

typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 u32Bitrate;
} RKADK_PARAM_BITRATE_S;

【成员】

成员名称描述
enStreamType流类型
u32Bitrate比特率

【相关数据类型及接口】

RKADK_STREAM_TYPE_E

10.3.10 RKADK_PARAM_REC_TIME_S​

【说明】

定义录像时长配置结构体。

【定义】

typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 time;
} RKADK_PARAM_REC_TIME_S;

【成员】

成员名称描述
enStreamType流类型
time录像时长

【相关数据类型及接口】

RKADK_STREAM_TYPE_E

10.3.11 RKADK_PARAM_GOP_S​

【说明】

定义VENC I帧间隔配置结构体。

【定义】

typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 u32Gop;
} RKADK_PARAM_GOP_S;

【成员】

成员名称描述
enStreamType流类型
u32GopI帧间隔

【相关数据类型及接口】

RKADK_STREAM_TYPE_E

10.3.12 RKADK_VQE_MODE_E​

【说明】

定义音频输入声音质量增强枚举类型

【定义】

typedef enum {
RKADK_VQE_MODE_AI_TALK = 0,
RKADK_VQE_MODE_AI_RECORD,
RKADK_VQE_MODE_AO,
RKADK_VQE_MODE_BUTT
} RKADK_VQE_MODE_E;

【成员】

成员名称描述
RKADK VQE MODE AI TALK _ _ _ _使能AEC、ANR、AGC
RKADK VQE MODE AI RECORD _ _ _ _使能ANR
RKADK VQE MODE AO _ _ _Reserved

10.3.13 MUXER_TYPE_E​

【说明】

定义录像文件类型枚举

【定义】

typedef enum rkMUXER_TYPE_E {
MUXER_TYPE_MP4 = 0,
MUXER_TYPE_MPEGTS,
MUXER_TYPE_FLV,
MUXER_TYPE_BUTT
} MUXER_TYPE_E;

【成员】

成员名称描述
MUXER TYPE MP4 _ _MP4
MUXER TYPE MPEGTS _ _Reserved
MUXER TYPE FLV _ _FLV

10.3.14 MUXER_PRE_RECORD_MODE_E​

【说明】

定义预录模式枚举

【定义】

typedef enum rkMUXER_PRE_RECORD_TYPE_E {
MUXER_PRE_RECORD_NONE = 0,
MUXER_PRE_RECORD_MANUAL_SPLIT,
MUXER_PRE_RECORD_SINGLE,
MUXER_PRE_RECORD_NORMAL
} MUXER_PRE_RECORD_MODE_E;

【成员】

成员名称描述
MUXER PRE RECORD NONE _ _ _不预录
MUXER PRE RECORD MANUAL SPLIT _ _ _ _手动切分文件预录
MUXER PRE RECORD SINGLE _ _ _第一个文件预录
MUXER PRE RECORD NORMAL _ _ _所有文件都预录

10.4 INI文件解析​

10.4.1 全局INI配置文件​

[version]
version = 1.3.1 /* version */

/* 普通参数 */

[common]
sensor_count = 1 /* Camera Sensor 个数 */
rec_unmute = TRUE /* 是否使能录像静音 */
enable_speaker = TRUE /* 是否使能Speaker */
speaker_volume = 80 /* Speaker音量,[0,100] */
mic_unmute = TRUE /* 是否使能麦克风 */
mic_volume = 80 /* 麦克风音量,[0,100] */
osd_time_format = 0 /* 时间水印格式 */
osd = TRUE /* 是否显示水印 */
boot_sound = TRUE /* 是否播放开机音乐 */
osd_speed = FALSE /* 是否显示速度水印 */
/* Audio 参数 */
[audio]
audio_node = default /* Audio 设备节点 */
sample_format = 1 /* 采样格式,特指SAMPLE_FORMAT_E, 详见Rkmedia 开

发文档 */

channels = 1 /* 通道数 */
samplerate = 48000 /* 采样率 */
samples_per_frame = 1024 /* 每帧采样个数 */
bitrate = 64000 /* 比特率 */
ai_layout = 0 /* AI layout mode, 详见Rkmedia开发文档 */
vqe_mode = 1 /* 配置音频输入声音质量增强, 特指RKADK_VQE_MODE_E
*/
codec_type = 8 /* Record 和 Live Audio 编码类型,默认适配MP2,特
指RKADK_CODEC_TYPE_E */

/* 缩略图参数 */

[thumb]
thumb_width = 320 /* 缩略图宽 */
thumb_height = 180 /* 缩略图高 */
venc_chn = 15 /* jpeg 编码通道 */

10.4.2 Sensor INI配置文件​

[sensor]
used_isp = TRUE /* Sensor是否有经过ISP */
max_width = 2688 /* 最大分辨率宽 */
max_height = 1520 /* 最大分辨率高 */
framerate = 30 /* 帧率 */
enable_record = TRUE /* 是否使能录像 */
enable_photo = TRUE /* 是否使能拍照 */
flip = FALSE /* 上下翻转 */
mirror = FALSE /* 左右镜像 */
ldc = 0 /* 畸变校正,[0,255] */
wdr = 0 /* 宽动态,[0,10] */
hdr = 0 /* 高动态范围成像,[0,10] */
antifog = 0 /* 去雾,[0,10] */

/* VI通道配置参数 */

[vi.0]
chn_id = 0 /* 通道号 */
device_name = rkispp_m_bypass /* Video 节点路径 */
buf_cnt = 4 /* VI捕获视频缓冲区计数 */
width = 2688 /* Video宽 */
height = 1520 /* Video高 */
pix_fmt = FBC0 /* VI输出格式, 详见Rkmedia 开发文档 */
module = RECORD_MAIN|PHOTO /* 该VI的使用模块,Options:
NONE/RECORD_MAIN/RECORD_SUB/PREVIEW/PHOTO/LIVE/DISP */
[vi.1]
chn_id = 1
device_name = rkispp_scale0
buf_cnt = 4
width = 0
height = 0
pix_fmt = NV12
module = RECORD_MAIN|PHOTO
[vi.2]
chn_id = 2
device_name = rkispp_scale1
buf_cnt = 2
width = 0
height = 0
pix_fmt = NV12
module = NONE
[vi.3]
chn_id = 3
device_name = rkispp_scale2
buf_cnt = 4
width = 848
height = 480
pix_fmt = NV12
module = RECORD_SUB|PREVIEW|LIVE|DISP
/* Record 参数 */
[record]
record_type = 0 /* 录像类型,特指RKADK_REC_TYPE_E */
file_type = 0 /* 录像文件类型,特指MUXER_TYPE_E */
pre_record_time = 0 /* 预录时长 */
pre_record_mode = 0 /* 预录模式 */

lapse_multiple ``= 30 /* 缩时录像文件播放时长与实际画面内容时间的倍数关系

*/
file_num = 1 /* 同时录制文件个数,最大2 */
/* 主码流 Record 0 VENC 参数 */
[record.0]
record_time = 60 /* 录像时长 */
splite_time = 60 /* 手动切分录像时长 */
lapse_interval = 60 /* 缩时录像时长 */
width = 2688 /* Video 宽 */
height = 1520 /* Video 高 */
bitrate = 8294400 /* 比特率 */
gop = 30 /* I 帧间隔 */
profile = 100 /* 编码器profile */
codec_type = 0 /* 编码类型,特指RKADK_CODEC_TYPE_E */
venc_chn = 0 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */
rc_mode = CBR /* 编码协议类型, 支持CBR、VBR、AVBR */
max_qp = 48 /* QP最大值,取值范围[8, 51] */
min_qp = 8 /* QP最小值,取值范围[0, 48], 不能大于max_qp */
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* 子码流 Record 1 VENC 参数,当 file_num = 1 时,不需要care rec.1*/
[record.1]
record_time = 60
splite_time = 60
lapse_interval = 60
width = 848
height = 480
bitrate = 407040
gop = 30
profile = 100
codec_type = 0
venc_chn = 1
rga_chn = 0
rc_mode = VBR
max_qp = 48
min_qp = 8
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* Photo VENC 参数 */
[photo]
image_width = 3840 /* 照片宽度 */
image_height = 2160 /* 照片高度 */
snap_num = 1 /* 单次拍照张数 */
venc_chn = 2 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */

/* 远程预览VENC参数 */

[preview]
width = 848 /* Video 宽 */
height = 480 /* Video 高 */
bitrate = 407040 /* 比特率 */
gop = 30 /* I 帧间隔 */
profile = 100 /* 编码器profile */
codec_type = 0 /* 编码类型,特指RKADK_CODEC_TYPE_E */
venc_chn = 1 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */
rc_mode = VBR /* 编码协议类型, 支持CBR、VBR、AVBR */
max_qp = 48 /* QP最大值,取值范围[8, 51] */
min_qp = 8 /* QP最小值,取值范围[0, 48], 不能大于max_qp */
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* 直播 VENC 参数 */
[live]
width = 1280
height = 720
bitrate = 4194304
gop = 30
profile = 100
codec_type = 0
venc_chn = 1
rga_chn = 0
rc_mode = VBR
max_qp = 48
min_qp = 8
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0

/* 本地预览参数 */

[display]
width = 720 /* 显示宽 */
height = 1280 /* 显示高 */
enable_buf_pool = TRUE /* 是否使能buffer pool */
buf_pool_cnt = 3 /* 是否使能buffer pool 个数 */
rotaion = 90 /* 旋转度数,Options:0/90/180/270 */
rga_chn = 0 /* RGA通道号 */
device_node = /dev/dri/card0 /* 视频输出设备节点 */
img_type = RGB888 /* 视频输出格式 */
plane_type = 1 /* 视频输出图层类型, 详见Rkmedia开发文档 */
z_pos = 1 /* 输出图层Z轴高度 */
vo_chn = 0 /* VO通道号 */

10.4.3 INI 配置注意事项​

默认INI 配置文件路径,通过rkadk_param.h中的RKADK_DEFPARAM_PATH 和RKADK_DEFPARAM_PATH_SENSOR_PREFIX 宏修改。INI 配置文件路径,通过rkadk_param.h中的RKADK_PARAM_PATH和RKADK_PARAM_PATH_SENSOR_PREFIX 宏修改,也可以通过RKADK_PARAM_Init API 设置。rkadk_defsetting.ini 和 rkadk_setting.ini 中的version 必须保持一致,否则会版本检测失败,使用默认INI 配置。SDK更新时,ini 参数可能会有增减,此时需要注意。sensor_count 代表实际使用的Sensor个数,根据实际使用设置,不能大于RKADK_MAX_SENSOR_CNT,目前实际调试过3 Sensor。如果Sensor经过ISP,used_isp必须配置成TRUE,直接通过配置ISP节点分辨率实现缩放,不需要配置RGA 通道,rga_chn统一配置成0;如果Sensor不经过ISP,used_isp必须配置成FALSE,并配置对应的rga_chn,内部使用RGA进行缩放。当录像、远程预览、直播等分辨率一样时,建议复用VENC(VENC 参数配置成一样),提高带宽和内存利用率。当VENC复用或者VENC分辨率相同时,建议复用RGA通道,提高带宽利用率。gop 建议和framerate配置成一样,确保每秒都有一个I帧。

11. 示例​

以下提供功能示例,使用注意事项如下:

运行示例前需保证无其他应用占用示例所用节点,如mediaserver、ispserver。示例默认参数适配我司EVB,硬件不同时,示例可能需要显式指定参数或调整代码。

11.1 rkadk_record_test​

【说明】

Record 测试。

【代码路径】

external/rkadk/examples/rkadk_record_test.c

【快速使用】

./rkadk_record_test

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
-t录像类型0
-pini配置文件目录路径/data/rkadk

11.2 rkadk_photo_test​

【说明】

Photo测试。

【代码路径】

external/rkadk/examples/rkadk_photo_test.c

【快速使用】

./rkadk_photo_test

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
-pini配置文件目录路径/data/rkadk
-t获取的JPG图片的数据类型NV12

11.3 rkadk_stream_test​

【说明】

获取音频流并编码,输出到文件;获取视频流并编码,输出到文件。【代码路径】

external/rkadk/examples/rkadk_stream_test.c

【快速使用】

./rkadk_stream_test

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
m测试模式:audio、videoaudio
e编码类型pcm
o输出文件路径/tmp/ai.pcm
-pini配置文件目录路径/data/rkadk

11.4 rkadk_player_test​

【说明】

本地文件播放测试。

【代码路径】

external/rkadk/examples/rkadk_player_test.c

【快速使用】

./rkadk_player_test

【选项】

选项描述默认值
-i播放文件路径/etc/bsa file/8k8bpsMono.wav _
-xVideo 显示起始 x 坐标0
-yVideo 显示起始 y 坐标0
-WVideo 显示宽度屏幕物理宽度
-HVideo 显示高度屏幕物理高度
-rVideo旋转角度0
-mVideo镜像disbale
-fVideo翻转disbale
-v是否使能Video播放disbale

播放视频文件时,需要-v 使能Video播放。镜像/翻转不能和旋转同时设置。

11.5 rkadk_thumb_test​

获取文件缩略图测试。

【代码路径】

external/rkadk/examples/rkadk_thumb_test.c

【快速使用】

获取MP4缩略图:./rkadk_thumb_test -i test_file.mp4
获取JPG缩略图:./rkadk_thumb_test -i test_file.jpg -f jpg -t MPF1

【选项】

选项描述默认值
-i测试文件路径无
-f文件格式:mp4、jpgmp4
-tJPG缩略图类型:DCF, MPF1, MPF2DCF
-T输出缩略图类型:JPG, NV12, RGB565, RGB888JPG
-w缩略图宽从ini获取
-h缩略图高从ini获取

11.6 rkadk_rtsp_test​

RTSP直播测试。

【代码路径】

external/rkadk/examples/rkadk_rtsp_test.c

【快速使用】

1、板端启动wifi

2、板端运行./rkadk_rtsp_test

3、PC端打开VLC ``-``> 媒体 -``> 打开网络串流 -``> 输入网络URL:rtsp://板端ip地址/live/main_stream

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
-pini配置文件目录路径/data/rkadk

11.7 rkadk_rtmp_test​

RTMP直播测试。

【代码路径】external/rkadk/examples/rkadk_rtmp_test.c

【快速使用】

1、板端启动wifi

2、板端运行./rkadk_rtmp_test
3、PC端打开VLC -> 媒体 -> 打开网络串流 -> 输入网络URL:rtmp://板端ip地址::1935/live/substream

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
-pini配置文件目录路径/data/rkadk

11.8 rkadk_storage_test​

【说明】

存储模块测试。

【代码路径】

external/rkadk/examples/rkadk_storage_test.c

【快速使用】

./rkadk_storage_test

【选项】

无

此test生成了全写入0的mp4文件,对自动删除、获取文件列表等功能和接口进行测试,该mp4文件没有实际数据,无法播放。

11.9 rkadk_disp_test​

本地预览测试。

【代码路径】external/rkadk/examples/rkadk_disp_test.c

【快速使用】

./rkadk_disp_test

【选项】

选 项描述默认值
-a内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。/oem/etc/iqfiles
-ICamera id0
-pini配置文件目录路径/data/rkadk