相机功能
PSDK 相机相关功能的头文件为dji_payload_camera.h
,本文档描述了dji_payload_camera.h
文件中结构体和函数原型的关键信息和使用方法。
- 宏定义、枚举与结构体 E_DjiCameraMode
E_DjiCameraShootPhotoMode
E_DjiCameraShootingState
E_DjiCameraMeteringMode
E_DjiCameraFocusMode
E_DjiCameraMediaFileType
E_DjiCameraPlaybackMode
E_DjiCameraVideoFrameRate
E_DjiCameraVideoResolution
E_DjiCameraTapZoomState
E_DjiCameraVideoStreamType
T_DjiCameraSDCardState
T_DjiCameraSpotMeteringTarget
T_DjiCameraSystemState
T_DjiCameraFocusAssistantSettings
T_DjiCameraPlaybackStatus
T_DjiCameraMediaFileAttr
T_DjiCameraMediaFileInfo
T_DjiCameraTapZoomState
T_DjiCameraCommonHandler
T_DjiCameraExposureMeteringHandler
T_DjiCameraFocusHandler
T_DjiCameraDigitalZoomHandler
T_DjiCameraOpticalZoomHandler
T_DjiCameraMediaDownloadPlaybackHandler
T_DjiCameraTapZoomHandler - 函数原型
DjiPayloadCamera_Init
DjiPayloadCamera_RegCommonHandler
DjiPayloadCamera_RegExposureMeteringHandler
DjiPayloadCamera_RegFocusHandler
DjiPayloadCamera_RegDigitalZoomHandler
DjiPayloadCamera_RegOpticalZoomHandler
DjiPayloadCamera_RegTapZoomHandler
DjiPayloadCamera_SetVideoStreamType
DjiPayloadCamera_GetVideoStreamRemoteAddress
DjiPayloadCamera_RegMediaDownloadPlaybackHandler
DjiPayloadCamera_SendVideoStream
DjiPayloadCamera_GetVideoStreamState
DjiPayloadCamera_PushAddedMediaFileInfo
DjiPayloadCamera_GetCameraTypeOfPayload
DjiPayloadCamera_GetCameraOpticalZoomSpecOfPayload
DjiPayloadCamera_GetCameraHybridZoomFocalLengthOfPayload
宏定义、枚举与结构体
typedef enum E_DjiCameraMode
相机类负载设备的模式
typedef enum {
DJI_CAMERA_MODE_SHOOT_PHOTO = 0, 拍照模式
DJI_CAMERA_MODE_RECORD_VIDEO = 1, 录像模式
DJI_CAMERA_MODE_PLAYBACK = 2, 媒体文件回放
} E_DjiCameraMode;
typedef enum E_DjiCameraShootPhotoMode
相机类负载设备的拍照模式
typedef enum {
DJI_CAMERA_SHOOT_PHOTO_MODE_SINGLE = 1, 单张拍摄模式
DJI_CAMERA_SHOOT_PHOTO_MODE_BURST = 4, 连拍模式
DJI_CAMERA_SHOOT_PHOTO_MODE_INTERVAL = 6, 间隔拍摄模式
} E_DjiCameraShootPhotoMode;
typedef enum E_DjiCameraShootingState
相机类负载设备拍照时的状态
typedef enum {
DJI_CAMERA_SHOOTING_PHOTO_IDLE = 0,相机为空闲状态
DJI_CAMERA_SHOOTING_SINGLE_PHOTO = 1, 相机正处于单拍状态
DJI_CAMERA_SHOOTING_BURST_PHOTO = 2, 相机正处于连拍状态
DJI_CAMERA_SHOOTING_INTERVAL_PHOTO = 6,相机正处于定时拍照状态
} E_DjiCameraShootingState;
typedef enum E_DjiCameraMeteringMode
相机类负载设备的测光模式
typedef enum {
DJI_CAMERA_METERING_MODE_CENTER = 0, 中央重点测光模式
DJI_CAMERA_METERING_MODE_AVERAGE = 1,平均测光模式
DJI_CAMERA_METERING_MODE_SPOT = 2, 点测光模式
} E_DjiCameraMeteringMode;
typedef enum E_DjiCameraFocusMode
相机类负载设备的对焦模式
typedef enum {
DJI_CAMERA_FOCUS_MODE_MANUAL = 0, 手动对焦模式
DJI_CAMERA_FOCUS_MODE_AUTO = 1, 自动对焦模式
} E_DjiCameraFocusMode;
typedef enum E_DjiCameraMediaFileType
媒体文件的类型
typedef enum {
DJI_CAMERA_FILE_TYPE_JPEG = 0, JPEG
DJI_CAMERA_FILE_TYPE_DNG = 1, DNG
DJI_CAMERA_FILE_TYPE_MOV = 2, MOV
DJI_CAMERA_FILE_TYPE_MP4 = 3, MP4
} E_DjiCameraMediaFileType;
typedef enum E_DjiCameraPlaybackMode
相机类负载设备的回放时的回放模式
typedef enum {
DJI_CAMERA_PLAYBACK_MODE_PLAY = 2, 回放中模式
DJI_CAMERA_PLAYBACK_MODE_PAUSE = 3, 回放暂停模式
DJI_CAMERA_PLAYBACK_MODE_STOP = 7, 停止回放模式
} E_DjiCameraPlaybackMode;
typedef enum E_DjiCameraVideoFrameRate
相机类负载设备执行视频回放时支持的视频帧率
typedef enum {
DJI_CAMERA_VIDEO_FRAME_RATE_24_FPS = 13, 24帧每秒
DJI_CAMERA_VIDEO_FRAME_RATE_25_FPS = 2, 25帧每秒
DJI_CAMERA_VIDEO_FRAME_RATE_30_FPS = 14, 30帧每秒
DJI_CAMERA_VIDEO_FRAME_RATE_UNKNOWN = 0, 视频帧率未知
} E_DjiCameraVideoFrameRate;
typedef enum E_DjiCameraVideoResolution
相机类负载设备执行视频回放时支持的分辨率
typedef enum {
DJI_CAMERA_VIDEO_RESOLUTION_640x480 = 0, 640x480
DJI_CAMERA_VIDEO_RESOLUTION_1280x720 = 4, 1280x720
DJI_CAMERA_VIDEO_RESOLUTION_1920x1080 = 10, 1920x1080
DJI_CAMERA_VIDEO_RESOLUTION_2048x1080 = 37, 2048x1080
DJI_CAMERA_VIDEO_RESOLUTION_3840x2160 = 41, 3840x2160
DJI_CAMERA_VIDEO_RESOLUTION_UNKNOWN = 255,相机支持的视频分辨率未知
} E_DjiCameraVideoResolution;
typedef enum E_DjiCameraTapZoomState
相机类负载设备指点变焦功能的状态
typedef enum {
DJI_CAMERA_TAP_ZOOM_STATE_IDLE = 0, 未执行指点变焦功能
DJI_CAMERA_TAP_ZOOM_STATE_ZOOM_IN = 1, 焦距变短,变焦倍数变大,图像被放大
DJI_CAMERA_TAP_ZOOM_STATE_ZOOM_OUT = 2, 焦距变长,变焦倍数变小,图像被缩小
DJI_CAMERA_TAP_ZOOM_STATE_ZOOM_LIMITED = 3, 已到达变焦限制
} E_DjiCameraTapZoomState;
typedef enum E_DjiCameraVideoStreamType
相机类负载设备视频流格式
typedef enum {
DJI_CAMERA_VIDEO_STREAM_TYPE_H264_CUSTOM_FORMAT = 0, 相机视频流按照自定义H264格式, 需要符合用户文档中Custom-H264视频流格式标准使用该格式发送视频流时, 视频流的码率不能超过实时的通道带宽限制可以通过DjiPayloadCamera_GetVideoStreamState接口获取实时通道带宽限制
DJI_CAMERA_VIDEO_STREAM_TYPE_H264_DJI_FORMAT = 1, 相机视频流按照DJI-H264格式, 需要符合用户文档中DJI-H264视频流格式标准使用该格式发送视频流时, 视频流将会被飞机重编码, 不需要动态调节码率来保证传输可靠性, 视频流码率不能超过8Mbps
} E_DjiCameraVideoStreamType;
typedef struct T_DjiCameraSDCardState
相机类负载设备中SD 卡的状态
typedef struct {
bool isInserted; 相机类负载设备中是否已插入SD 卡
bool isVerified; 相机类负载设备中的SD 卡是否被认证
bool isInitializing; 相机类负载设备中SD 卡是否已初始化
bool isReadOnly; 相机类负载设备中的SD 卡是否处于只读模式
bool isFormatting; 相机类负载设备中的SD 卡正在格式化
bool isFull; 相机类负载设备中的SD 卡内存已满
bool isInvalidFormat; 相机类负载设备中的SD 卡已格式化
bool hasError; 相机类负载设备中的SD 卡出现错误
uint32_t totalSpaceInMB; 相机类负载设备中SD 卡的总容量,单位:MB
uint32_t remainSpaceInMB; 相机类负载设备中SD 卡的剩余容量,单位:MB
uint32_t availableCaptureCount;当前相机类负载设备中SD 卡可存储的相片数量
uint32_t availableRecordingTimeInSeconds; 当前相机类负载设备中SD 卡可存储视频的长度,单位:s
} T_DjiCameraSDCardState;
typedef struct T_DjiCameraSpotMeteringTarget
指定相机类负载设备在点测光模式下的对象
typedef struct {
uint8_t col; 指定测光对象所在的列,取值范围为0~11
uint8_t row; 指定测光对象所在的行,取值范围为0~7
} T_DjiCameraSpotMeteringTarget;
typedef struct T_DjiCameraSystemState
相机类负载设备的状态
typedef struct {
E_DjiCameraMode cameraMode; 相机类负载设备当前的模式,详情请参见:E_DjiCameraMode
E_DjiCameraShootingState shootingState; 相机类负载设备当前拍照的模式,详情请参见:E_DjiCameraShootingState
bool isStoring; 相机类负载设备是否正在存储媒体文件
bool isShootingIntervalStart; 相机类负载设备是否正在定时拍照
uint16_t currentPhotoShootingIntervalTimeInSeconds; 指定相机类负载设备定时拍照倒计时,当该该数值递减为0 时将触发相机拍照,单位:s
uint16_t currentPhotoShootingIntervalCount; 指定相机类负载设备定时拍照时拍摄的照片
bool isRecording; 相机类负载设备是否正在录像
uint16_t currentVideoRecordingTimeInSeconds; 指定相机类负载设备录像时间的进度,单位:s
bool isOverheating; 相机是否过热
bool hasError;相机是否出现错误
} T_DjiCameraSystemState;
typedef struct T_DjiCameraFocusAssistantSettings
设置相机类负载设备的对焦助手
typedef struct {
bool isEnabledMF; 在手动对焦的模式下使用对焦助手功能
bool isEnabledAF; 在自动对焦的模式下使用对焦助手功能
} T_DjiCameraFocusAssistantSettings;
typedef struct T_DjiCameraPlaybackStatus
相机类负载设备的回放状态
typedef struct {
E_DjiCameraPlaybackMode playbackMode;媒体文件当前的播放时间,详情请参见:E_DjiCameraPlaybackMode
uint8_t videoPlayProcess; 当前媒体文件的播放进度,范围为0~100
uint32_t videoLengthMs; 媒体文件总的播放时长,单位:ms
uint32_t playPosMs; 指定当前所需播放的位置,单位:ms
} T_DjiCameraPlaybackStatus;
typedef struct T_DjiCameraMediaFileAttr
视频文件的信息
typedef struct {
uint16_t attrVideoDuration;视频文件的回放时长,单位:s
uint16_t attrVideoFrameRate; 视频文件的帧率,单位:fps
uint16_t attrVideoResolution; 视频文件的分辨率,单位:px
} T_DjiCameraMediaFileAttr;
typedef struct T_DjiCameraMediaFileInfo
媒体文件的信息
typedef struct {
E_DjiCameraMediaFileType type; 媒体文件的类型,详情请参见:E_DjiCameraMediaFileType
T_DjiCameraMediaFileAttr mediaFileAttr; 媒体文件的属性
uint32_t fileSize; 媒体文件的大小,单位:byte
} T_DjiCameraMediaFileInfo;
typedef struct T_DjiCameraTapZoomState
相机类负载设备指点变焦功能的状态
typedef struct {
E_DjiCameraTapZoomState zoomState; 相机类负载设备的变焦状态
bool isGimbalMoving; 相机类负载设备执行指点变焦时云台的转动状态
} T_DjiCameraTapZoomState;
typedef struct T_DjiCameraCommonHandler
控制相机类负载设备执行基础动作,请根据本结构体中的函数构造相机类负载设备执行基础功能的回调函数,其中包括:
- 获取相机类负载设备的当前状态
- 设置相机类负载设备的工作模式
- 获取相机类负载设备当前的工作模式
- 控制相机类负载设备开始录像
- 控制相机类负载设备停止录像
- 控制相机类负载设备开始拍摄照片
- 控制相机类负载设备停止拍摄照片
- 设置相机类负载设备的拍照模式
- 获取相机类负载设备当前的拍照模式
- 设置相机类负载设备在连拍模式下的连拍张数
- 获取相机类负载设备当前的连拍张数
- 设置相机类负载设备在定时拍照模式下的拍照间隔
- 获取相机类负载设备在定时拍照模式下的拍照间隔
- 获取相机类负载设备中当前SD 卡状态
- 控制相机类负载设备格式化SD 卡
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行基础动作的功能时,请根据如下函数原型开发相机类负载设备的基础功能。
typedef struct {
@brief 获取相机类负载设备当前状态的回调函数
@param systemState: 指向用于存储相机类负载设备当前状态的内存空间
@return 执行结果
T_DjiReturnCode (*GetSystemState)(T_DjiCameraSystemState *systemState);
@brief 设置相机类负载设备工作模式的回调函数
@note 在相机类负载设备执行某项任务时无法切换工作模式
@param mode: 相机工作的模式
@return 执行结果
T_DjiReturnCode (*SetMode)(E_DjiCameraMode mode);
@brief 获取相机类负载设备当前工作模式的回调函数
@param mode: 指向用于存储相机类负载设备工作模式的内存空间
@return 执行结果
T_DjiReturnCode (*GetMode)(E_DjiCameraMode *mode);
@brief 控制相机类负载设备开始录像的回调函数
@return 执行结果
T_DjiReturnCode (*StartRecordVideo)(void);
@brief 控制相机类负载设备停止录像的回调函数
@return 执行结果
T_DjiReturnCode (*StopRecordVideo)(void);
@brief 控制相机类负载设备开始拍摄照片的回调函数
@return 执行结果
T_DjiReturnCode (*StartShootPhoto)(void);
@brief 控制相机类负载设备停止拍摄照片的回调函数
@return 执行结果
T_DjiReturnCode (*StopShootPhoto)(void);
@brief 设置相机类负载设备拍照模式的回调函数
@param mode: 相机拍照的模式
@return 执行结果
T_DjiReturnCode (*SetShootPhotoMode)(E_DjiCameraShootPhotoMode mode);
@brief 获取相机类负载设备当前拍照模式的回调函数
@param mode: 指向用于存储相机类负载设备拍照模式的内存空间
@return 执行结果
T_DjiReturnCode (*GetShootPhotoMode)(E_DjiCameraShootPhotoMode *mode);
@brief 设置相机类负载设备在连拍模式下,连拍张数的回调函数
@param burstCount: 相机连拍张数
@return 执行结果
T_DjiReturnCode (*SetPhotoBurstCount)(E_DjiCameraBurstCount burstCount);
@brief 获取相机类负载设备当前连拍张数的回调函数
@param burstCount: 指向用于存储相机类负载设备连拍张数的内存空间
@return 执行结果
T_DjiReturnCode (*GetPhotoBurstCount)(E_DjiCameraBurstCount *burstCount);
@brief 设置相机类负载设备在定时拍照模式下拍照间隔的回调函数
@note 在定时拍照模式下拍照的时间间隔范围为2~255,当时间间隔设为255 时,相机类负载设备将会持续拍摄照片
@param settings: 设置相机类负载设备在定时拍照模式下拍照的时间间隔
@return 执行结果
T_DjiReturnCode (*SetPhotoTimeIntervalSettings)(T_DjiCameraPhotoTimeIntervalSettings settings);
@brief 获取相机类负载设备在定时拍照模式下拍照间隔的回调函数
@param settings: 指向用于存储相机类负载设备在定时拍照模式下拍照间隔时间的内存空间
@return 执行结果
T_DjiReturnCode (*GetPhotoTimeIntervalSettings)(T_DjiCameraPhotoTimeIntervalSettings *settings);
@brief 获取相机类负载设备中当前SD 卡状态的回调函数
@param sdCardState: 指向用于存储相机类负载SD 卡状态的内存空间
@return 执行结果
T_DjiReturnCode (*GetSDCardState)(T_DjiCameraSDCardState *sdCardState);
@brief 控制相机类负载设备格式化SD 卡的回调函数
@return 执行结果
T_DjiReturnCode (*FormatSDCard)(void);
} T_DjiCameraCommonHandler;
typedef struct T_DjiCameraExposureMeteringHandler
控制相机类负载设备执行测光功能,请根据本结构体中的函数构造控制相机类负载设备执行测光相关功能的回调函数,其中包括:
- 设置相机类负载设备的测光模式
- 获取相机类负载设备当前的测光模式
- 设置相机类负载设备在点测光模式下的测光对象
- 获取相机类负载设备在点测光模式下的测光对象
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行测光的功能时,请根据如下函数原型开发相机类负载设备的测光功能。
typedef struct {
@brief 设置相机类负载设备测光模式的回调函数
@param mode: 相机测光模式
@return 执行结果
T_DjiReturnCode (*SetMeteringMode)(E_DjiCameraMeteringMode mode);
@brief 获取相机类负载设备当前测光模式的回调函数
@param mode: 指向用于存储相机类负载设备测光模式的内存空间
@return 执行结果
T_DjiReturnCode (*GetMeteringMode)(E_DjiCameraMeteringMode *mode);
@brief 设置相机类负载设备在点测光模式下测光对象的回调函数
@param target: 相机类负载设备在点测光模式下的测光对象
@return 执行结果
T_DjiReturnCode (*SetSpotMeteringTarget)(T_DjiCameraSpotMeteringTarget target);
@brief 获取相机类负载设备在点测光模式下测光对象的回调函数
@param target: 指向用于存储相机类负载设备在点测光模式下测光对象的内存空间
@return 执行结果
T_DjiReturnCode (*GetSpotMeteringTarget)(T_DjiCameraSpotMeteringTarget *target);
} T_DjiCameraExposureMeteringHandler;
typedef struct T_DjiCameraFocusHandler
控制相机类负载设备执行对焦功能,请根据本结构体中的函数构造控制相机类负载设备执行对焦相关功能的回调函数,其中包括:
- 设置相机类负载设备的对焦模式
- 获取相机类负载设备当前的对焦模式
- 设置相机类负载设备的对焦区域
- 获取相机类负载设备的对焦区域
- 设置相机类负载设备的对焦助手
- 获取相机类负载设备对焦助手的状态
- 设置相机类负载设备对焦环的值
- 获取相机类负载设备对焦环的值
- 获取相机类负载设备对焦环上限的值
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行光学变焦的功能时,请根据如下函数原型开发相机类负载设备的光学变焦功能。
typedef struct {
@brief 设置相机类负载设备对焦模式的回调函数
@param mode: 相机类负载设备的对焦模式
@return 执行结果
T_DjiReturnCode (*SetFocusMode)(E_DjiCameraFocusMode mode);
@brief 获取相机类负载设备当前对焦模式的回调函数
@param mode: 指向用于存储相机类负载设备当前对焦模式的内存空间
@return 执行结果
T_DjiReturnCode (*GetFocusMode)(E_DjiCameraFocusMode *mode);
@brief 设置相机类负载设备对焦区域的回调函数
@param target: 相机类负载设备的对焦区域
@return 执行结果
T_DjiReturnCode (*SetFocusTarget)(T_DjiCameraPointInScreen target);
@brief 获取相机类负载设备对焦区域的回调函数
@param target: 指向用于存储相机类负载设备对焦区域的内存空间
@return 执行结果
T_DjiReturnCode (*GetFocusTarget)(T_DjiCameraPointInScreen *target);
@brief 设置相机类负载设备对焦助手的回调函数
@param settings: 相机类负载设备对焦助手的状态
@return 执行结果
T_DjiReturnCode (*SetFocusAssistantSettings)(T_DjiCameraFocusAssistantSettings settings);
@brief 获取相机类负载设备对焦助手状态的回调函数
@param settings: 指向用于存储相机类负载设备对焦助手状态的内存空间
@return 执行结果
T_DjiReturnCode (*GetFocusAssistantSettings)(T_DjiCameraFocusAssistantSettings *settings);
@brief 设置相机类负载设备对焦环值的回调函数
@param value: 相机类负载设备对焦环的值
@return 执行结果
T_DjiReturnCode (*SetFocusRingValue)(uint32_t value);
@brief 获取相机类负载设备对焦环值的回调函数
@param value: 指向用于存储相机类负载设备对焦环值的内存空间
@return 执行结果
T_DjiReturnCode (*GetFocusRingValue)(uint32_t *value);
@brief 获取相机类负载设备对焦环上限值的回调函数
@param value: 指向用于存储相机类负载设备对焦环上限值的内存空间
@return 执行结果
T_DjiReturnCode (*GetFocusRingValueUpperBound)(uint32_t *value);
} T_DjiCameraFocusHandler;
typedef struct T_DjiCameraDigitalZoomHandler
控制相机类负载设备执行数字变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行数字对焦相关功能的回调函数,其中包括:
- 设置相机类负载设备数字变焦倍数的回调函数
- 获取相机类负载设备数字变焦倍数的回调函数
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行数字变焦的功能时,请根据如下函数原型开发相机类负载设备的数字变焦功能。
typedef struct {
@brief 设置相机类负载设备数字变焦倍数的回调函数
@param factor: 相机类负载设备的数字变焦倍数
@return 执行结果
T_DjiReturnCode (*SetDigitalZoomFactor)(psdk_f32_t factor);
@brief 获取相机类负载设备数字变焦倍数的回调函数
@param factor: 指向用于存储相机类负载设备数字变焦倍数的内存空间
@return 执行结果
T_DjiReturnCode (*GetDigitalZoomFactor)(psdk_f32_t *factor);
} T_DjiCameraDigitalZoomHandler;
typedef struct T_DjiCameraOpticalZoomHandler
控制相机类负载设备执行光学变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行光学变焦相关功能的回调函数,其中包括:
- 设置相机类负载设备光学变焦的焦距
- 获取相机类负载设备光学变焦的焦距
- 获取相机类负载设备光学变焦的倍数
- 获取相机类负载设备当前光学变焦的倍数
- 控制相机类负载设备开始连续光学变焦
- 控制相机类负载设备停止连续光学变焦
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数
- 使用控制相机类负载设备执行光学变焦的功能时,请根据如下函数原型开发相机类负载设备的光学变焦功能。
typedef struct {
@brief 设置相机类负载设备光学变焦焦距的回调函数
@param focalLength: 相机类负载设备光学变焦焦距
@return 执行结果
T_DjiReturnCode (*SetOpticalZoomFocalLength)(uint32_t focalLength);
@brief 获取相机类负载设备光学变焦焦距的回调函数
@param focalLength: 指向用于存储相机类负载设备光学变焦焦距的内存空间
@return 执行结果
T_DjiReturnCode (*GetOpticalZoomFocalLength)(uint32_t *focalLength);
@brief 获取相机类负载设备光学变焦倍数的回调函数
@param factor: 指向用于存储相机类负载设备光学变焦倍数的内存空间
@return 执行结果
T_DjiReturnCode (*GetOpticalZoomFactor)(psdk_f32_t *factor);
@brief 获取相机类负载设备当前光学变焦倍数的回调函数
@param spec: 指向用于存储相机类负载设备当前光学变焦倍数的内存空间
@return 执行结果
T_DjiReturnCode (*GetOpticalZoomSpec)(T_DjiCameraOpticalZoomSpec *spec);
@brief 控制相机类负载设备开始连续光学变焦的回调函数
@param direction: 相机类负载设备连续光学变焦的方向
@param speed: 相机类负载设备连续光学变焦的速度
@return 执行结果
T_DjiReturnCode (*StartContinuousOpticalZoom)(E_DjiCameraZoomDirection direction,E_DjiCameraZoomSpeed speed);
@brief 控制相机类负载设备停止连续光学变焦的回调函数
@return 执行结果
T_DjiReturnCode (*StopContinuousOpticalZoom)(void);
} T_DjiCameraOpticalZoomHandler;
typedef struct T_DjiCameraMediaDownloadPlaybackHandler
控制相机类负载设备执行媒体文件下载回放功能,请根据本结构体中的函数构造控制相机类负载设备执行媒体文件下载回放相关功能的回调函数,其中包括:
- 获取相机类负载设备中媒体文件的路径
- 获取相机类负载设备中指定媒体文件的信息
- 获取相机类负载设备中指定的媒体文件(源文件)
- 为相机类负载设备中指定的媒体文件创建缩略图
- 获取相机类负载设备中已创建的缩略图信息
- 获取相机类负载设备中已创建的缩略图
- 销毁相机类负载设备中为指定媒体文件已创建的缩略图
- 为相机类负载设备中指定的媒体文件创建截屏图
- 获取相机类负载设备中已创建的截屏图
- 获取相机类负载设备中已创建的截屏图信息
- 销毁相机类负载设备中为指定媒体文件已创建的截屏图
- 通知用户开始下载媒体文件
- 通知用户停止下载媒体文件
- 删除相机类负载设备中用户指定的媒体文件
- 获取相机类负载设备中媒体文件回放状态
- 设置相机类负载设备中所需回放的媒体文件路径
- 控制相机类负载设备在回放模式下开始回放指定的媒体文件
- 控制相机类负载设备在回放模式下停止回放指定的媒体文件
- 控制相机类负载设备在回放模式下暂停回放指定的媒体文件
- 控制相机类负载设备在回放模式下从指定的位置开始回放指定的媒体文件
说明
- 仅Linux 平台支持PSDK 的媒体文件下载回放功能。
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行媒体文件下载回放的功能时,请根据如下函数原型开发相机类负载设备的下载回放功能。
typedef struct {
@brief 获取相机类负载设备中媒体文件路径的回调函数
@param dirPath: 指向用于存储相机类负载设备中媒体文件路径的内存空间
@warning 媒体文件路径的长度(包含'\0'在内)不可超过 256
@return 执行结果
T_DjiReturnCode (*GetMediaFileDir)(char *dirPath);
@brief 获取相机类负载设备中指定的媒体文件信息的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param fileInfo: 指向用于存储相机类负载设备中指定的媒体文件信息的内存空间
@return 执行结果
T_DjiReturnCode (*GetMediaFileOriginInfo)(const char *filePath, T_DjiCameraMediaFileInfo *fileInfo);
@brief 获取相机类负载设备中指定媒体文件(源文件)的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param offset: 相机类负载设备中指定媒体文件的偏移位置
@param length: 相机类负载设备中指定媒体文件原始数据的长度
@param data: 指向媒体文件的原始数据
@return 执行结果
T_DjiReturnCode (*GetMediaFileOriginData)(const char *filePath, uint32_t offset, uint32_t length, uint8_t *data);
@brief 为相机类负载设备中指定的媒体文件创建缩略图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*CreateMediaFileThumbNail)(const char *filePath);
@brief 获取相机类负载设备中已创建的缩略图信息的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param fileInfo: 指向用于存储相机类负载设备中已创建的缩略图信息的内存空间
@return 执行结果
T_DjiReturnCode (*GetMediaFileThumbNailInfo)(const char *filePath, T_DjiCameraMediaFileInfo *fileInfo);
@brief 获取相机类负载设备中已创建的缩略图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param offset: 缩略图数据的偏移位置
@param length: 缩略图数据的长度
@param data: 缩略图的数据
@return 执行结果
T_DjiReturnCode (*GetMediaFileThumbNailData)(const char *filePath, uint32_t offset, uint32_t length,
uint8_t *data);
@brief 销毁相机类负载设备中为指定媒体文件已创建的缩略图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*DestroyMediaFileThumbNail)(const char *filePath);
@brief 为相机类负载设备中指定的媒体文件创建截屏图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*CreateMediaFileScreenNail)(const char *filePath);
@brief 获取相机类负载设备中已创建的截屏图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param offset: 截屏图数据的偏移位置
@param length: 截屏图数据的长度
@param data: 截屏图的数据
@return 执行结果
T_DjiReturnCode (*GetMediaFileScreenNailData)(const char *filePath, uint32_t offset, uint32_t length,
uint8_t *data);
@brief 获取相机类负载设备中已创建的截屏图信息的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@param fileInfo: 指向用于存储相机类负载设备中已创建的截屏图信息的内存空间
@return 执行结果
T_DjiReturnCode (*GetMediaFileScreenNailInfo)(const char *filePath, T_DjiCameraMediaFileInfo *fileInfo);
@brief 销毁相机类负载设备中为指定媒体文件已创建的截屏图的回调函数
@param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*DestroyMediaFileScreenNail)(const char *filePath);
@brief 通知用户开始下载媒体文件的回调函数
@note 在该回调函数中,开发者可设置高速数据传输通道的占用比例
@return 执行结果
T_DjiReturnCode (*StartDownloadNotification)(void);
@brief 通知用户停止下载媒体文件的回调函数
@note 在该回调函数中,开发者可设置高速数据传输通道的占用比例
@return 执行结果
T_DjiReturnCode (*StopDownloadNotification)(void);
@brief 删除相机类负载设备中用户指定的媒体文件
@param filePath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*DeleteMediaFile)(char *filePath);
@brief 获取相机类负载设备中媒体文件回放状态的回调函数
@param status: 指向媒体文件的回放状态
@return 执行结果
T_DjiReturnCode (*GetMediaPlaybackStatus)(T_DjiCameraPlaybackStatus *status);
@brief 设置相机类负载设备中所需回放的媒体文件路径的回调函数
@param filePath: 指向用于存储相机类负载设备中所需回放的媒体文件路径的内存空间
@return 执行结果
T_DjiReturnCode (*SetMediaPlaybackFile)(const char *filePath);
@brief 控制相机类负载设备在回放模式下开始回放指定的媒体文件的回调函数
@return 执行结果
T_DjiReturnCode (*StartMediaPlayback)(void);
@brief 控制相机类负载设备在回放模式下停止回放指定的媒体文件的回调函数
@return 执行结果
T_DjiReturnCode (*StopMediaPlayback)(void);
@brief 控制相机类负载设备在回放模式下暂停回放指定的媒体文件的回调函数
@return 执行结果
T_DjiReturnCode (*PauseMediaPlayback)(void);
@brief 控制相机类负载设备在回放模式下从指定的位置开始回放指定的媒体文件的回调函数
@param playbackPosition: 媒体文件的回放位置,单位:ms
@return 执行结果
T_DjiReturnCode (*SeekMediaPlayback)(uint32_t playbackPosition);
} T_DjiCameraMediaDownloadPlaybackHandler;
typedef struct T_DjiCameraTapZoomHandler
控制相机类负载设备执行指点变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行指点变焦相关功能的回调函数,其中包括:
- 获取相机类负载设备指点变焦功能的状态
- 开启或关闭相机类负载设备指点变焦功能
- 获取相机类负载设备指点变焦功能的标志状态
- 设置相机类负载设备指点变焦的倍数
- 获取相机类负载设备指点变焦的倍数
- 触发相机类负载设备执行指点变焦功能
说明
- 仅Linux 平台支持PSDK 的指点变焦功能;
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行指点变焦的功能时,请根据如下函数原型开发相机类负载设备的指点变焦功能。
typedef struct {
@brief 获取相机类负载设备指点变焦功能状态的回调函数
@param state: 指向用于存储相机类负载设备指点变焦功能状态的内存空间
@return 执行结果
T_DjiReturnCode (*GetTapZoomState)(T_DjiCameraTapZoomState *state);
@brief 开启或关闭相机类负载设备指点变焦功能的回调函数
@note 仅在开启相机类负载设备指点变焦的功能后,才能使用指点变焦功能
@param enabledFlag: 开启相机类负载设备指点变焦功能的标志
@return 执行结果
T_DjiReturnCode (*SetTapZoomEnabled)(bool enabledFlag);
@brief 获取相机类负载设备指点变焦功能标志状态(判断是否已开启指点变焦功能)的回调函数
@param enabledFlag: 指向用于存储相机类负载设备指点变焦功能标志的内存空间
@return 执行结果
T_DjiReturnCode (*GetTapZoomEnabled)(bool *enabledFlag);
@brief 设置相机类负载设备指点变焦倍数的回调函数
@param multiplier: 相机类负载设备指点变焦倍数
@return 执行结果
T_DjiReturnCode (*SetTapZoomMultiplier)(uint8_t multiplier);
@brief 获取相机类负载设备指点变焦倍数的回调函数
@param multiplier: 指向用于存储相机类负载设备指点变焦倍数的内存空间
@return 执行结果
T_DjiReturnCode (*GetTapZoomMultiplier)(uint8_t *multiplier);
@brief 触发相机类负载设备执行指点变焦功能的回调函数
@note 用户在DJI Pilot 或基于MSDK 开发的App 上指定所需放大的对象后将调用该回调函数
@note 基于PSDK 开发的负载设备控制程序能够控制云台转向指定的位置,再以指定的变焦倍数放大用户指定的对象
@param target: 用户在DJI Pilot 或基于MSDK 开发的App 上指定的对象位置信息
@return 执行结果
T_DjiReturnCode (*TapZoomAtTarget)(T_DjiCameraPointInScreen target);
} T_DjiCameraTapZoomHandler;
函数原型
function DjiPayloadCamera_Init
功能:PSDK 相机模块初始化 | product:all |
负载设备相机模块初始化。
说明
- 使用相机类功能前,请先调用本接口初始化相机模块;
- 开发者可根据用户实际的使用需求,按照相机模块中的函数原型构造并注册回调函数,在使用相机类功能前,请先调用本接口初始化相机模块。
T_DjiReturnCode DjiPayloadCamera_Init(void);
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegCommonHandler
功能:注册相机类负载设备的基础功能 | product:all |
注册相机类负载设备基础功能接口的句柄。
说明
- 在使用相机类负载设备的基础功能前,请开发者按照相机类基础功能的函数原型,构造控制。
- 相机类负载设备执行基础功能的回调函数,并将该回调函数注册到如下接口中。
T_DjiReturnCode DjiPayloadCamera_RegCommonHandler(const T_DjiCameraCommonHandler *cameraCommonHandler);
cameraCommonHandler:指向开发者实现的相机类负载设备基础功能的函数
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegExposureMeteringHandler
功能:注册相机类负载设备曝光和测光的功能 | product:all |
注册相机类负载设备执行曝光和测光功能接口的句柄。
说明
- 在使用相机类负载设备的曝光和测光功能前,请开发者按照相机曝光和测光功能的函数原型,构造控制相机类负载设备实现测光和曝光功能的回调函数,并将该回调函数注册到如下接口中;
- 在使用相机曝光和测光功能时,请注意相应接口中参数的取值范围。
T_DjiReturnCode DjiPayloadCamera_RegExposureMeteringHandler(const T_DjiCameraExposureMeteringHandler
*cameraExposureMeteringHandler);
cameraExposureMeteringHandler:指向相机类负载设备的曝光和测光功能的处理程序的指针
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegFocusHandler
功能:注册相机类负载设备的对焦功能 | product:all |
注册相机类负载设备执行对焦功能接口的句柄。
说明
- 在使用相机类负载设备的对焦功能前,请开发者按照相机对焦功能的函数原型,构造控制相机类负载设备实现对焦功能的回调函数,并将该回调函数注册到如下接口中;
- 在使用相机对焦功能时,请注意相应接口中参数的取值范围。
T_DjiReturnCode DjiPayloadCamera_RegFocusHandler(const T_DjiCameraFocusHandler *cameraFocusHandler);
cameraFocusHandler:指向开发者实现的相机类负载设备的对焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegDigitalZoomHandler
功能:注册相机类负载设备的数字变焦功能 | product:all |
注册相机类负载设备执行数字变焦功能接口的句柄。
说明: 在使用相机类负载设备数字变焦功能前,请开发者按照相机数字变焦功能的函数原型,构造控制相机类负载设备实现数字变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_DjiReturnCode DjiPayloadCamera_RegDigitalZoomHandler(const T_DjiCameraDigitalZoomHandler
*cameraDigitalZoomHandler);
cameraDigitalZoomHandler:指向开发者实现的相机类负载设备的数字变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegOpticalZoomHandler
功能:注册相机类负载设备的光学变焦功能 | product:all |
注册相机类负载设备执行光学变焦功能接口的句柄。
说明: 在使用相机类负载设备光学变焦功能前,请开发者按照相机光学变焦功能的函数原型,构造控制相机类负载设备实现光学变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_DjiReturnCode DjiPayloadCamera_RegOpticalZoomHandler(const T_DjiCameraOpticalZoomHandler
*cameraOpticalZoomHandler);
cameraOpticalZoomHandler:指向开发者实现的相机类负载设备的数字变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegTapZoomHandler
功能:注册相机类负载设备的指点变焦功能 | product:all |
注册相机类负载设备执行指点变焦功能接口的句柄。
说明: 在使用相机类负载设备光学变焦功能前,请开发者按照相机光学变焦功能的函数原型,构造控制相机类负载设备实现光学变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_DjiReturnCode DjiPayloadCamera_RegTapZoomHandler(const T_DjiCameraTapZoomHandler *cameraTapZoomHandler);
cameraTapZoomHandler:指向开发者实现的相机类负载设备的指点变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_SetVideoStreamType
功能:设置相机视频流格式 | product:all |
在初始化相机功能时,可以调用该接口设置相机视频流格式
说明
- 设置相机视频流格式需要在调用PsdkCore_ApplicationStart接口之前,该接口的最长执行时间为10S;
- 若不调用该接口,相机视频流格式默认为 DJI_CAMERA_VIDEO_STREAM_TYPE_H264_CUSTOM_FORMAT。
T_DjiReturnCode DjiPayloadCamera_SetVideoStreamType(E_DjiCameraVideoStreamType videoStreamType);
videoStreamType:相机视频流格式
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_GetVideoStreamRemoteAddress
功能:获取发送视频流的目标地址 | product:all |
用户可以获取视频流传输的目标地址,在异构系统中通过其他子系统独立发送视频流数据。
说明
- 该接口需要在调用PsdkCore_Init之后使用。
T_DjiReturnCode DjiPayloadCamera_GetVideoStreamRemoteAddress(char *ipAddr, uint16_t *port);
ipAddr:指向视频流传输的目标地址
port:指向视频流传输的目标端口
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_RegMediaDownloadPlaybackHandler
功能:注册相机类负载媒体下载和播放功能接口的处理程序。 | product:all |
注册摄像头播放和下载相关接口,主要可以通过飞行员的播放接口在线操作用户存储设备的媒体文件。 它可以播放和下载图片和视频文件。 目前,仅支持 MP4 和 JPG 格式的媒体文件。
T_DjiReturnCode DjiPayloadCamera_RegMediaDownloadPlaybackHandler(const T_DjiCameraMediaDownloadPlaybackHandler
*cameraMediaHandler);
cameraMediaHandler:指向相机类负载的媒体下载和播放功能的处理程序的指针。
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_SendVideoStream
功能:通过数据通道的视频流将视频发送到移动端 | product:all |
通过数据通道的视频流将视频发送到移动端。 该函数存在且只能在 Linux 中使用。
说明 必须确保实际带宽小于相应通道或流的带宽限制,有关带宽限制的详细信息,请参阅开发者文档和通道/流的状态。 用户可以通过 DjiPayloadCamera_GetVideoStreamState() 函数获取“videoStream”通道的状态。 如果实际带宽超过限制或设置忙状态,用户应停止传输数据或减少要发送的数据量。 否则,数据可能会被丢弃。
T_DjiReturnCode DjiPayloadCamera_SendVideoStream(const uint8_t *data, uint16_t len);
data:指向需要发送的数据的指针
len:通过数据流发送的数据长度,必须小于等于65000,单位:字节。
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_GetVideoStreamState
功能:获取“videoStream”通道的数据传输状态 | product:all |
获取“videoStream”通道的数据传输状态。 用户可以使用状态作为控制视频流数据传输的基础。 该函数存在且只能在Linux操作系统中使用。
T_DjiReturnCode DjiPayloadCamera_GetVideoStreamState(T_DjiDataChannelState *state);
state:指向"videoStream"通道状态的指针。
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_PushAddedMediaFileInfo
功能:推送媒体文件的信息 | product:all |
在拍照或录制视频文件后,用户必须立刻使用本接口向无人机推送创建媒体文件的信息
T_DjiReturnCode
DjiPayloadCamera_PushAddedMediaFileInfo(const char *filePath, T_DjiCameraMediaFileInfo mediaFileInfo);
filePath:指向已添加的媒体文件的地址,且必须以'\0' 结尾,媒体文件地址的长度不可超过dji_FILE_PATH_SIZE_MAX bytes
mediaFileInfo:已添加的媒体文件的信息
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_GetCameraTypeOfPayload
功能:获取安装在飞机上的其他相机类负载的类型 | product:all |
说明
- 具体使用条件请参考 DJI SDK 开发者网站中的 DJI 文档。
- 如果请求的位置有空或有效载荷没有相机类型,接口将返回错误。
T_DjiReturnCode DjiPayloadCamera_GetCameraTypeOfPayload(E_DjiMountPosition payloadPosition,
E_DjiCameraType *cameraType);
payloadPosition:负载安装位置
cameraType:指向负载类相机的类型的指针
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_GetCameraOpticalZoomSpecOfPayload
功能:获取安装在飞机上的其他相机有效载荷的光学变焦规格 | product:all |
说明
- 具体使用条件请参考 DJI SDK 开发者网站中的 DJI 文档。
- 如果请求位置有空或者payload没有相关信息,接口会返回错误。
T_DjiReturnCode DjiPayloadCamera_GetCameraOpticalZoomSpecOfPayload(E_DjiMountPosition payloadPosition,
T_DjiCameraOpticalZoomSpec *opticalZoomSpec);
payloadPosition:负载安装位置
opticalZoomSpec:指向光学变焦规格的指针
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPayloadCamera_GetCameraHybridZoomFocalLengthOfPayload
功能:获取安装在飞机上的其他相机有效载荷的混合变焦焦距 | product:all |
说明
- 具体使用条件请参考 DJI SDK 开发者网站中的 DJI 文档。
- 如果请求位置有空或者payload没有相关信息,接口会返回错误。
T_DjiReturnCode DjiPayloadCamera_GetCameraHybridZoomFocalLengthOfPayload(E_DjiMountPosition payloadPosition,
uint16_t *focalLength);
payloadPosition:负载安装位置
focalLength:指向光学焦距的指针,单位:0.1mm。
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode