1# AVImageGenerator 2 3 4## 概述 5 6提供用于从视频资源中获取指定时间点视频帧的API。 7 8**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 9 10**起始版本:** 18 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [avimage_generator.h](avimage__generator_8h.md) | 定义AVImageGenerator接口。使用其Native API从视频资源中获取指定时间点视频帧。 | 21| [avimage_generator_base.h](avimage__generator__base_8h.md) | 定义AVImageGenerator的枚举。 | 22 23 24### 类型定义 25 26| 名称 | 描述 | 27| -------- | -------- | 28| typedef struct [OH_AVImageGenerator](#oh_avimagegenerator) [OH_AVImageGenerator](#oh_avimagegenerator) | 定义OH_AVImageGenerator类型,用于生成指定时间点视频帧。 | 29| typedef enum [OH_AVImageGenerator_QueryOptions](#oh_avimagegenerator_queryoptions-1) [OH_AVImageGenerator_QueryOptions](#oh_avimagegenerator_queryoptions) | 指定时间点与视频帧对应关系的枚举类型。 | 30 31 32### 枚举 33 34| 名称 | 描述 | 35| -------- | -------- | 36| [OH_AVImageGenerator_QueryOptions](#oh_avimagegenerator_queryoptions-1) {<br> OH_AVIMAGE_GENERATOR_QUERY_NEXT_SYNC = 0,<br> OH_AVIMAGE_GENERATOR_QUERY_PREVIOUS_SYNC = 1, <br> OH_AVIMAGE_GENERATOR_QUERY_CLOSEST_SYNC = 2, <br> OH_AVIMAGE_GENERATOR_QUERY_CLOSEST = 3 } | 指定时间点与视频帧对应关系的枚举类型。 | 37 38 39### 函数 40 41| 名称 | 描述 | 42| -------- | -------- | 43| [OH_AVImageGenerator](#oh_avimagegenerator) \* [OH_AVImageGenerator_Create](#oh_avimagegenerator_create) (void) | 创建OH_AVImageGenerator实例,用于生成指定时间点视频帧。 | 44| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVImageGenerator_SetFDSource](#oh_avimagegenerator_setfdsource) ([OH_AVImageGenerator](#oh_avimagegenerator) \*generator, int32_t fd, int64_t offset, int64_t size) | 通过媒体文件描述设置数据源。 | 45| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVImageGenerator_FetchFrameByTime](#oh_avimagegenerator_fetchframebytime) ([OH_AVImageGenerator](#oh_avimagegenerator) \*generator, int64_t timeUs, [OH_AVImageGenerator_QueryOptions](#oh_avimagegenerator_queryoptions) options, OH_PixelmapNative \*\*pixelMap) | 从视频资源中获取指定时间点视频帧。 | 46| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVImageGenerator_Release](#oh_avimagegenerator_release) ([OH_AVImageGenerator](#oh_avimagegenerator) \*generator) | 释放用于OH_AVImageGenerator的资源以及销毁OH_AVImageGenerator实例。 | 47 48 49## 类型定义说明 50 51 52### OH_AVImageGenerator 53 54``` 55typedef struct OH_AVImageGenerator OH_AVImageGenerator 56``` 57**描述** 58定义OH_AVImageGenerator类型,用于生成指定时间点视频帧。 59 60**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 61 62**起始版本:** 18 63 64 65### OH_AVImageGenerator_QueryOptions 66 67``` 68typedef enum OH_AVImageGenerator_QueryOptions OH_AVImageGenerator_QueryOptions 69``` 70**描述** 71指定时间点与视频帧对应关系的枚举类型。 72 73**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 74 75**起始版本:** 18 76 77 78## 枚举类型说明 79 80 81### OH_AVImageGenerator_QueryOptions 82 83``` 84enum OH_AVImageGenerator_QueryOptions 85``` 86**描述** 87指定时间点与视频帧对应关系的枚举类型。 88 89**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 90 91**起始版本:** 18 92 93| 枚举值 | 描述 | 94| -------- | -------- | 95| OH_AVIMAGE_GENERATOR_QUERY_NEXT_SYNC | 此选项用于选取传入时间点或之后的关键帧。 | 96| OH_AVIMAGE_GENERATOR_QUERY_PREVIOUS_SYNC | 此选项用于选取传入时间点或之前的关键帧。 | 97| OH_AVIMAGE_GENERATOR_QUERY_CLOSEST_SYNC | 此选项用于选取离传入时间点最近的关键帧。 | 98| OH_AVIMAGE_GENERATOR_QUERY_CLOSEST | 此选项用于选取离传入时间点最近的帧,该帧不一定是关键帧。 | 99 100 101## 函数说明 102 103 104### OH_AVImageGenerator_Create() 105 106``` 107OH_AVImageGenerator* OH_AVImageGenerator_Create(void) 108``` 109**描述** 110创建OH_AVImageGenerator实例,用于生成指定时间点视频帧。 111 112**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 113 114**起始版本:** 18 115 116**返回:** 117 118创建成功时返回指向OH_AVImageGenerator实例的指针,否则返回空指针。 119 120可能的失败原因:HstEngineFactory未能创建AVMetadataHelperEngine。 121 122 123### OH_AVImageGenerator_FetchFrameByTime() 124 125``` 126OH_AVErrCode OH_AVImageGenerator_FetchFrameByTime(OH_AVImageGenerator* generator, int64_t timeUs, OH_AVImageGenerator_QueryOptions options, OH_PixelmapNative** pixelMap) 127``` 128**描述** 129从视频资源中获取指定时间点视频帧。 130 131此函数必须在[SetFDSource](#oh_avimagegenerator_setfdsource)之后调用。 132 133**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 134 135**参数:** 136 137| 名称 | 描述 | 138| -------- | -------- | 139| generator | 指向OH_AVImageGenerator实例的指针。 | 140| timeUs | 需要获取的视频帧在视频中的时间点,单位为微秒(μs)。 | 141| options | 关于给定时间Us和视频帧之间关系的时间选项,请参阅[OH_AVImageGenerator_QueryOptions](#oh_avimagegenerator_queryoptions-1)。 | 142| pixelMap | 获取的视频帧对象。详细信息请参阅{@link OH_PixelmapNative}。 | 143 144**返回:** 145 146函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1): 147 148AV_ERR_OK:执行成功。 149 150AV_ERR_INVALID_VAL:输入的generator为空指针或参数无效。 151 152AV_ERR_OPERATE_NOT_PERMIT:操作被禁止。 153 154AV_ERR_UNSUPPORTED_FORMAT:格式不支持。 155 156AV_ERR_NO_MEMORY:内部内存分配失败。 157 158### OH_AVImageGenerator_Release() 159 160``` 161OH_AVErrCode OH_AVImageGenerator_Release(OH_AVImageGenerator* generator) 162``` 163**描述** 164释放用于OH_AVImageGenerator的资源以及销毁OH_AVImageGenerator实例。 165 166**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 167 168**起始版本:** 18 169 170**参数:** 171 172| 名称 | 描述 | 173| -------- | -------- | 174| generator | 指向OH_AVImageGenerator实例的指针。 | 175 176**返回:** 177 178函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1): 179 180AV_ERR_OK:执行成功。 181 182AV_ERR_INVALID_VAL:输入的generator为空指针或参数无效。。 183 184 185### OH_AVImageGenerator_SetFDSource() 186 187``` 188OH_AVErrCode OH_AVImageGenerator_SetFDSource(OH_AVImageGenerator* generator, int32_t fd, int64_t offset, int64_t size) 189``` 190**描述** 191通过媒体文件描述设置数据源。 192 193**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 194 195**起始版本:** 18 196 197**参数:** 198 199| 名称 | 描述 | 200| -------- | -------- | 201| generator | 指向OH_AVImageGenerator实例的指针。 | 202| fd | 媒体源的文件描述符。 | 203| offset | 媒体源在文件描述符中的偏移量。 | 204| size | 媒体源的大小。 | 205 206**返回:** 207 208函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1): 209 210AV_ERR_OK:执行成功。 211 212AV_ERR_INVALID_VAL:输入的generator为空指针或参数无效。 213 214AV_ERR_OPERATE_NOT_PERMIT:操作被禁止。 215 216AV_ERR_NO_MEMORY:内部内存分配失败。 217