已关闭
add docs to apis-media-kit and apis-avcodec-kit #122735
wangqg创建于 2025年12月20日关闭于 2025年12月31日
add docs to apis-media-kit and apis-avcodec-kit #122735
已关闭
wangqg创建于 2025年12月20日关闭于 2025年12月31日
19 个文件变更+3111-2
@@ -75,7 +75,8 @@ enum OH_AVErrCode
75| AV_ERR_IO_SSL_CONNECT_FAIL = 5411009 | 由于未携带服务器证书、证书无效或过期导致客户端验证失败。<br>**起始版本:** 14 |75| AV_ERR_IO_SSL_CONNECT_FAIL = 5411009 | 由于未携带服务器证书、证书无效或过期导致客户端验证失败。<br>**起始版本:** 14 |
76| AV_ERR_IO_SSL_SERVER_CERT_UNTRUSTED = 5411010 | SSL服务器证书不受信任。<br>**起始版本:** 14 |76| AV_ERR_IO_SSL_SERVER_CERT_UNTRUSTED = 5411010 | SSL服务器证书不受信任。<br>**起始版本:** 14 |
77| AV_ERR_IO_UNSUPPORTED_REQUEST = 5411011 | 网络协议不支持该请求。<br>**起始版本:** 14 |77| AV_ERR_IO_UNSUPPORTED_REQUEST = 5411011 | 网络协议不支持该请求。<br>**起始版本:** 14 |
78+| AV_ERR_IO_CLEARTEXT_NOT_PERMITTED = 5411012 | 不允许使用明文。<br>**起始版本:** 23 |
78| AV_ERR_STREAM_CHANGED = 5410005 | 同步模式下流格式发生变更。可以通过调用接口[OH_VideoEncoder_GetOutputDescription](capi-native-avcodec-videoencoder-h.md#oh_videoencoder_getoutputdescription)(视频编码)、[OH_VideoDecoder_GetOutputDescription](capi-native-avcodec-videodecoder-h.md#oh_videodecoder_getoutputdescription)(视频解码)、[OH_AudioCodec_GetOutputDescription](capi-native-avcodec-audiocodec-h.md#oh_audiocodec_getoutputdescription)(音频编解码)来获取更新后流的配置信息。<br>**起始版本:** 20 |79| AV_ERR_STREAM_CHANGED = 5410005 | 同步模式下流格式发生变更。可以通过调用接口[OH_VideoEncoder_GetOutputDescription](capi-native-avcodec-videoencoder-h.md#oh_videoencoder_getoutputdescription)(视频编码)、[OH_VideoDecoder_GetOutputDescription](capi-native-avcodec-videodecoder-h.md#oh_videodecoder_getoutputdescription)(视频解码)、[OH_AudioCodec_GetOutputDescription](capi-native-avcodec-audiocodec-h.md#oh_audiocodec_getoutputdescription)(音频编解码)来获取更新后流的配置信息。<br>**起始版本:** 20 |
79| AV_ERR_TRY_AGAIN_LATER = 5410006 | 同步模式下临时缓冲区查询失败,建议等待短暂间隔后重试操作。<br>**起始版本:** 20 |80| AV_ERR_TRY_AGAIN_LATER = 5410006 | 同步模式下临时缓冲区查询失败,建议等待短暂间隔后重试操作。<br>**起始版本:** 20 |
80- 81+| AV_ERR_SUPER_RESOLUTION_UNSUPPORTED = 5410003 | 该媒体源或者当前设备不支持超分。<br>**起始版本:** 23 |
81- 82+| AV_ERR_SUPER_RESOLUTION_NOT_ENABLED = 5410004 | 未使能超分。<br>**起始版本:** 23 |
@@ -59,6 +59,8 @@
59| [bool OH_AVFormat_GetIntBuffer(struct OH_AVFormat *format, const char *key, int32_t **addr, size_t *size)](#oh_avformat_getintbuffer) | 从OH_AVFormat中读取一个int32_t数据的数组。<br> 需要注意的是,获取的buffer生命周期与OH_AVFormat对象绑定,当format销毁时自动失效。<br> 如果开发者需要长时间保持绑定,应用程序必须将数据显式复制到新分配的内存。 |59| [bool OH_AVFormat_GetIntBuffer(struct OH_AVFormat *format, const char *key, int32_t **addr, size_t *size)](#oh_avformat_getintbuffer) | 从OH_AVFormat中读取一个int32_t数据的数组。<br> 需要注意的是,获取的buffer生命周期与OH_AVFormat对象绑定,当format销毁时自动失效。<br> 如果开发者需要长时间保持绑定,应用程序必须将数据显式复制到新分配的内存。 |
60| [const char *OH_AVFormat_DumpInfo(struct OH_AVFormat *format)](#oh_avformat_dumpinfo) | 返回OH_AVFormat中包含的key-value组成的字符串。最大可返回1024字节的字符串,销毁format时释放字符串指针。 |60| [const char *OH_AVFormat_DumpInfo(struct OH_AVFormat *format)](#oh_avformat_dumpinfo) | 返回OH_AVFormat中包含的key-value组成的字符串。最大可返回1024字节的字符串,销毁format时释放字符串指针。 |
61| [bool OH_AVFormat_SetIntBuffer(struct OH_AVFormat *format, const char *key, const int32_t *addr, size_t size)](#oh_avformat_setintbuffer) | 将指定长度int32_t类型的数据块写入OH_AVFormat。 |61| [bool OH_AVFormat_SetIntBuffer(struct OH_AVFormat *format, const char *key, const int32_t *addr, size_t size)](#oh_avformat_setintbuffer) | 将指定长度int32_t类型的数据块写入OH_AVFormat。 |
62+| [uint32_t OH_AVFormat_GetKeyCount(OH_AVFormat *format)](#oh_avformat_getkeycount) | 获取OH_AVFormat中包含的键的总数。 |
63+| [bool OH_AVFormat_GetKey(OH_AVFormat *format, uint32_t index, const char **key)](#oh_avformat_getkey) | 从OH_AVFormat中通过索引获取键名字符串。 |
62 64 
63## 枚举类型说明65## 枚举类型说明
64 66 
@@ -650,4 +652,78 @@ bool OH_AVFormat_SetIntBuffer(struct OH_AVFormat *format, const char *key, const
650| -- | -- |652| -- | -- |
651| bool | 返回true表示成功,返回false表示失败。<br> 可能的失败原因:<br> 1. 输入format为空指针。<br> 2. 输入format参数结构校验失败。<br> 3. 输入key为空指针。<br> 4. 输入addr为空指针。<br> 5. 输入size为0。 |653| bool | 返回true表示成功,返回false表示失败。<br> 可能的失败原因:<br> 1. 输入format为空指针。<br> 2. 输入format参数结构校验失败。<br> 3. 输入key为空指针。<br> 4. 输入addr为空指针。<br> 5. 输入size为0。 |
652 654 
655+### OH_AVFormat_GetKeyCount()
653 656 
657+```c
658+uint32_t OH_AVFormat_GetKeyCount(OH_AVFormat *format)
659+```
660+ 
661+**描述**
662+ 
663+获取OH_AVFormat中包含的键的总数。
664+ 
665+**系统能力:** SystemCapability.Multimedia.Media.Core
666+ 
667+**起始版本:** 23
668+ 
669+**参数:**
670+ 
671+| 参数项 | 描述 |
672+| -- | -- |
673+| [OH_AVFormat](capi-core-oh-avformat.md) *format | 指向OH_AVFormat实例的指针。 |
674+ 
675+**返回值:**
676+ 
677+| 类型 | 说明 |
678+| -- | -- |
679+| uint32_t | 数据提取成功时返回键的数量,提取失败时返回0。<br> 可能的失败原因:<br> 1. 输入的format为空指针。<br> 2. 系统资源不足。 |
680+ 
681+**示例:**
682+ 
683+```c
684+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
685+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
686+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
687+OH_AVFormat* avMetadata = OH_AVMetadataExtractor_GetCustomInfo(extractor);
688+uint32_t ret = OH_AVFormat_GetKeyCount(avMetadata);
689+```
690+ 
691+### OH_AVFormat_GetKey()
692+ 
693+```c
694+bool OH_AVFormat_GetKey(OH_AVFormat *format, uint32_t index, const char **key)
695+```
696+ 
697+**描述**
698+ 
699+从OH_AVFormat中通过索引获取键名字符串。
700+ 
701+**系统能力:** SystemCapability.Multimedia.Media.Core
702+ 
703+**起始版本:** 23
704+ 
705+**参数:**
706+ 
707+| 参数项 | 描述 |
708+| -- | -- |
709+| [OH_AVFormat](capi-core-oh-avformat.md) *format | 指向OH_AVFormat实例的指针。 |
710+| uint32_t index | 要查询键的索引值,范围:[0, [OH_AVFormat_GetKeyCount](#oh_avformat_getkeycount)(format))。 |
711+| const char **key | 输出指针用于接收键名称字符串;其生命周期与格式绑定。 |
712+ 
713+**返回值:**
714+ 
715+| 类型 | 说明 |
716+| -- | -- |
717+| bool | 成功时返回true,失败时返回false。 |
718+ 
719+**示例:**
720+ 
721+```c
722+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
723+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
724+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
725+OH_AVFormat* avMetadata = OH_AVMetadataExtractor_GetCustomInfo(extractor);
726+uint32_t index = 0;
727+const char *key = "";
728+bool ret = OH_AVFormat_GetKey(avMetadata, index, &key);
729+```
@@ -0,0 +1,50 @@
1+# avmedia_base.h
2+<!--Kit: Media Kit-->
3+<!--Subsystem: -->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+## 概述
10+ 
11+定义AVMedia的结构体和枚举类型。
12+ 
13+**引用文件:** <multimedia/player_framework/avmedia_base.h>
14+ 
15+**库:** libavmedia_source.so
16+ 
17+**系统能力:** SystemCapability.Multimedia.Media.Core
18+ 
19+**起始版本:** 23
20+ 
21+**相关模块:** [AVMediaBase](capi-avmediabase.md)
22+ 
23+## 汇总
24+ 
25+### 枚举
26+ 
27+| 名称 | typedef关键字 | 描述 |
28+| -- | -- | -- |
29+| [OH_AVMedia_SeekMode](#oh_avmedia_seekmode) | OH_AVMedia_SeekMode | 给定时间和帧之间关系的帧查询选项。 |
30+ 
31+## 枚举类型说明
32+ 
33+### OH_AVMedia_SeekMode
34+ 
35+```c
36+enum OH_AVMedia_SeekMode
37+```
38+ 
39+**描述:**
40+ 
41+指定时间点和帧对应关系的枚举类型。
42+ 
43+**起始版本:** 23
44+ 
45+| 枚举项 | 描述 |
46+| -- | -- |
47+| OH_AVMEDIA_SEEK_NEXT_SYNC = 0 | 表示选取传入时间点或之后的关键帧。 |
48+| OH_AVMEDIA_SEEK_PREVIOUS_SYNC = 1 | 表示选取传入时间点或之前的关键帧。 |
49+| OH_AVMEDIA_SEEK_CLOSEST_SYNC = 2 | 表示选取离传入时间点最近的关键帧。 |
50+| OH_AVMEDIA_SEEK_CLOSEST = 3 | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 |
@@ -0,0 +1,969 @@
1+# avmedia_source.h
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+## 概述
10+ 
11+定义AVMediaSource的结构体和枚举类型。
12+ 
13+**引用文件:** <multimedia/player_framework/avmedia_source.h>
14+ 
15+**库:** libavmedia_source.so
16+ 
17+**系统能力:** SystemCapability.Multimedia.Media.Core
18+ 
19+**起始版本:** 23
20+ 
21+**相关模块:** [AVMediaSource](capi-avmediasource.md)
22+ 
23+## 汇总
24+ 
25+### 结构体
26+ 
27+| 名称 | typedef 关键字 | 描述 |
28+| -- | -- | -- |
29+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) | OH_AVHttpHeader | 声明HTTP头部类型。 |
30+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) | OH_AVMediaSource | 声明媒体源类型。 |
31+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) | OH_AVMediaSourceLoadingRequest | 加载请求对象。应用通过该对象获取所请求资源的位置。 |
32+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) | OH_AVMediaSourceLoader | 声明媒体数据加载器类型,由应用实现。 |
33+ 
34+### 枚举
35+ 
36+| 名称 | typedef关键字 | 描述 |
37+| -- | -- | -- |
38+| [AVLoadingRequestError](#avloadingrequesterror) | AVLoadingRequestError | 网络加载请求的错误码枚举。 |
39+ 
40+### 函数
41+ 
42+| 名称 | 描述 |
43+| -- | -- |
44+| [OH_AVHttpHeader *OH_AVHttpHeader_Create(void)](#oh_avhttpheader_create) | 创建一个HTTP头部实例。 |
45+| [OH_AVErrCode OH_AVHttpHeader_Destroy(OH_AVHttpHeader *header)](#oh_avhttpheader_destroy) | 释放一个HTTP头实例。 |
46+| [OH_AVErrCode OH_AVHttpHeader_GetCount(OH_AVHttpHeader *header, uint32_t *count)](#oh_avhttpheader_getcount) | 获取HTTP头部实例中的记录项数量。 |
47+| [OH_AVErrCode OH_AVHttpHeader_AddRecord(OH_AVHttpHeader *header, const char *key, const char *value)](#oh_avhttpheader_addrecord) | 向HTTP头部实例中添加一个键值对记录。 |
48+| [OH_AVErrCode OH_AVHttpHeader_GetRecord(OH_AVHttpHeader *header, uint32_t index, const char \*\*key, const char \*\*value)](#oh_avhttpheader_getrecord) | 通过索引获取HTTP头部实例中的键值对记录。 |
49+| [OH_AVMediaSource *OH_AVMediaSource_CreateWithUrl(const char *url, OH_AVHttpHeader *header)](#oh_avmediasource_createwithurl) | 通过URL创建媒体源。 |
50+| [OH_AVMediaSource *OH_AVMediaSource_CreateWithDataSource(OH_AVDataSource *dataSource)](#oh_avmediasource_createwithdatasource) | 通过[OH_AVDataSource](..//apis-avcodec-kit/capi-codecbase-oh-avdatasource.md)创建媒体源。 |
51+| [OH_AVMediaSource *OH_AVMediaSource_CreateWithFd(int32_t fd, int64_t offset, int64_t size)](#oh_avmediasource_createwithfd) | 通过文件描述符(FileDescriptor)创建媒体源。 |
52+| [OH_AVErrCode OH_AVMediaSource_SetMimeType(OH_AVMediaSource *source, const char *mimetype)](#oh_avmediasource_setmimetype) | 设置媒体MIME类型以处理扩展媒体源。 |
53+| [OH_AVErrCode OH_AVMediaSourceLoadingRequest_GetUrl(OH_AVMediaSourceLoadingRequest *request, const char **url)](#oh_avmediasourceloadingrequest_geturl) | 获取请求的URL。 |
54+| [OH_AVErrCode OH_AVMediaSourceLoadingRequest_GetHttpHeader(OH_AVMediaSourceLoadingRequest *request, OH_AVHttpHeader **header)](#oh_avmediasourceloadingrequest_gethttpheader) | 获取请求的HTTP头部。 |
55+| [int32_t OH_AVMediaSourceLoadingRequest_RespondData(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, int64_t offset, const uint8_t *data, uint64_t dataSize)](#oh_avmediasourceloadingrequest_responddata) | 用于向AVPlayer发送请求数据的接口。 |
56+| [void OH_AVMediaSourceLoadingRequest_RespondHeader(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, OH_AVHttpHeader *header, const char *redirectUrl)](#oh_avmediasourceloadingrequest_respondheader) | 应用用于向AVPlayer发送响应头部的接口,必须在首次调用[OH_AVMediaSourceLoadingRequest_RespondData](#oh_avmediasourceloadingrequest_responddata)之前调用。 |
57+| [void OH_AVMediaSourceLoadingRequest_FinishLoading(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, AVLoadingRequestError error)](#oh_avmediasourceloadingrequest_finishloading) | 通知播放器当前请求的状态。在推送完单个资源的所有数据后,应用应发送LOADING_ERROR_SUCCESS状态,以通知播放器资源推送已完成。 |
58+| [OH_AVMediaSourceLoader *OH_AVMediaSourceLoader_Create(void)](#oh_avmediasourceloader_create) | 创建一个[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)实例。 |
59+| [OH_AVErrCode OH_AVMediaSourceLoader_Destroy(OH_AVMediaSourceLoader *loader)](#oh_avmediasourceloader_destroy) | 释放[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)实例。 |
60+| [OH_AVErrCode OH_AVMediaSource_SetMediaSourceLoader(OH_AVMediaSource *source, OH_AVMediaSourceLoader *loader)](#oh_avmediasource_setmediasourceloader) | 为媒体源实例设置一个源加载器。 |
61+| [typedef int64_t (*OH_AVMediaSourceLoaderOnSourceOpenedCallback)(OH_AVMediaSourceLoadingRequest *request, void *userData)](#oh_avmediasourceloaderonsourceopenedcallback) | 定义由服务端调用的[SourceOpenCallback](#oh_avmediasourceloaderonsourceopenedcallback)函数。 |
62+| [typedef void (*OH_AVMediaSourceLoaderOnSourceReadCallback)(int64_t uuid, int64_t requestedOffset, int64_t requestedLength, void *userData)](#oh_avmediasourceloaderonsourcereadcallback) | 定义由服务端调用的[SourceReadCallback](#oh_avmediasourceloaderonsourcereadcallback)函数。 |
63+| [typedef void (*OH_AVMediaSourceLoaderOnSourceClosedCallback)(int64_t uuid, void *userData)](#oh_avmediasourceloaderonsourceclosedcallback) | 定义由服务端调用的[SourceCloseCallback](#oh_avmediasourceloaderonsourceclosedcallback)函数。 |
64+| [OH_AVErrCode OH_AVMediaSourceLoader_SetSourceOpenCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceOpenedCallback callback, void *userData)](#oh_avmediasourceloader_setsourceopencallback) | 为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置打开回调函数。 |
65+| [OH_AVErrCode OH_AVMediaSourceLoader_SetSourceReadCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceReadCallback callback, void *userData)](#oh_avmediasourceloader_setsourcereadcallback) | 为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置读取回调函数。 |
66+| [OH_AVErrCode OH_AVMediaSourceLoader_SetSourceCloseCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceClosedCallback callback, void *userData)](#oh_avmediasourceloader_setsourceclosecallback) | 为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置关闭回调函数。 |
67+ 
68+## 枚举类型说明
69+ 
70+### AVLoadingRequestError
71+ 
72+```c
73+typedef enum AVLoadingRequestError
74+```
75+ 
76+**描述:**
77+ 
78+网络加载请求的错误码枚举。
79+ 
80+**起始版本:** 23
81+ 
82+| 枚举项 | 描述 |
83+| -- | -- |
84+| AV_LOADING_ERROR_SUCCESS = 0 | 资源成功下载。 |
85+| AV_LOADING_ERROR_NOT_READY = 1 | 资源未准备好,无法访问。 |
86+| AV_LOADING_ERROR_NO_RESOURCE = 2 | 资源URL不存在。 |
87+| AV_LOADING_ERROR_INVALID_HANDLE = 3 | 资源句柄的UUID无效。 |
88+| AV_LOADING_ERROR_ACCESS_DENIED = 4 | 客户端无权请求该资源。 |
89+| AV_LOADING_ERROR_ACCESS_TIMEOUT = 5 | 访问超时。 |
90+| AV_LOADING_ERROR_AUTHORIZE_FAILED = 6 | 授权失败。 |
91+ 
92+## 函数说明
93+ 
94+### OH_AVHttpHeader_Create()
95+ 
96+```c
97+OH_AVHttpHeader *OH_AVHttpHeader_Create(void)
98+```
99+ 
100+**描述**
101+ 
102+创建一个HTTP头部实例。
103+ 
104+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
105+ 
106+**起始版本:** 23
107+ 
108+**返回值:**
109+ 
110+| 类型 | 说明 |
111+| -- | -- |
112+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) * | 成功返回OH_AVHttpHeader对象指针,失败返回nullptr。 |
113+ 
114+**示例:**
115+ 
116+```c
117+OH_AVHttpHeader* headerTmp = OH_AVHttpHeader_Create();
118+```
119+ 
120+### OH_AVHttpHeader_Destroy
121+ 
122+```c
123+OH_AVErrCode OH_AVHttpHeader_Destroy(OH_AVHttpHeader *header)
124+```
125+ 
126+**描述**
127+ 
128+释放一个HTTP头实例。
129+ 
130+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
131+ 
132+**起始版本:** 23
133+ 
134+**参数:**
135+ 
136+| 参数项 | 描述 |
137+| -- | -- |
138+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | 指向OH_AVHttpHeader实例的指针。 |
139+ 
140+**返回值:**
141+ 
142+| 类型 | 说明 |
143+| -- | -- |
144+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:输入的header为nullptr或实例销毁失败。 |
145+ 
146+**示例:**
147+ 
148+```c
149+OH_AVHttpHeader* headerTmp = OH_AVHttpHeader_Create();
150+OH_AVErrCode err = OH_AVHttpHeader_Destroy(headerTmp);
151+```
152+ 
153+### OH_AVHttpHeader_GetCount()
154+ 
155+```c
156+OH_AVErrCode OH_AVHttpHeader_GetCount(OH_AVHttpHeader *header, uint32_t *count)
157+```
158+ 
159+**描述**
160+ 
161+获取HTTP头部实例中的记录项数量。
162+ 
163+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
164+ 
165+**起始版本:** 23
166+ 
167+**参数:**
168+ 
169+| 参数项 | 描述 |
170+| -- | -- |
171+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | 指向OH_AVHttpHeader实例的指针。 |
172+| uint32_t *count | 用于输出头部实例中记录项的数量。 |
173+ 
174+**返回值:**
175+ 
176+| 类型 | 说明 |
177+| -- | -- |
178+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:输入的header为nullptr。 |
179+ 
180+**示例:**
181+ 
182+```c
183+OH_AVHttpHeader *header = OH_AVHttpHeader_Create();
184+uint32_t count = 0;
185+OH_AVErrCode err = OH_AVHttpHeader_GetCount(header, &count);
186+```
187+ 
188+### OH_AVHttpHeader_AddRecord()
189+ 
190+```c
191+OH_AVErrCode OH_AVHttpHeader_AddRecord(OH_AVHttpHeader *header, const char *key, const char *value)
192+```
193+ 
194+**描述**
195+ 
196+向HTTP头实例添加一个键值对记录。
197+ 
198+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
199+ 
200+**起始版本:** 23
201+ 
202+**参数:**
203+ 
204+| 参数项 | 描述 |
205+| -- | -- |
206+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | 指向OH_AVHttpHeader实例的指针。 |
207+| const char *key | 记录的键名。 |
208+| const char *value | 记录的值。 |
209+ 
210+**返回值:**
211+ 
212+| 类型 | 说明 |
213+| -- | -- |
214+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:任一参数为nullptr。 |
215+ 
216+**示例:**
217+ 
218+```c
219+OH_AVHttpHeader* header = OH_AVHttpHeader_Create();
220+OH_AVErrCode err = OH_AVHttpHeader_AddRecord(header, "content-length", "1894335");
221+```
222+ 
223+### OH_AVHttpHeader_GetRecord()
224+ 
225+```c
226+OH_AVErrCode OH_AVHttpHeader_GetRecord(OH_AVHttpHeader *header, uint32_t index, char **key, char **value)
227+```
228+ 
229+**描述**
230+ 
231+通过索引获取HTTP头部实例中的键值对记录。
232+ 
233+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
234+ 
235+**起始版本:** 23
236+ 
237+**参数:**
238+ 
239+| 参数项 | 描述 |
240+| -- | -- |
241+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | 指向OH_AVHttpHeader实例的指针。 |
242+| uint32_t index | 记录在头部中的位置。 |
243+| char **key | 用于输出记录的键名。 |
244+| char **value | 用于输出记录的值。 |
245+ 
246+**返回值:**
247+ 
248+| 类型 | 说明 |
249+| -- | -- |
250+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:header为nullptr或索引越界。 |
251+ 
252+**示例:**
253+ 
254+```c
255+OH_AVHttpHeader *header = OH_AVHttpHeader_Create();
256+const char* key = nullptr;
257+const char* value = nullptr;
258+OH_AVErrCode err = OH_AVHttpHeader_GetRecord(header, 0, &key, &value);
259+```
260+ 
261+### OH_AVMediaSource_CreateWithUrl()
262+ 
263+```c
264+OH_AVMediaSource *OH_AVMediaSource_CreateWithUrl(const char *url, OH_AVHttpHeader *header)
265+```
266+ 
267+**描述**
268+ 
269+通过URL创建媒体源。
270+ 
271+**系统能力:** SystemCapability.Multimedia.Media.Core
272+ 
273+**起始版本:** 23
274+ 
275+**参数:**
276+ 
277+| 参数项 | 描述 |
278+| -- | -- |
279+| const char *url | 媒体源的URL。支持以下流媒体格式:HLS、HTTP-FLV、DASH和HTTPS。 |
280+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | 附加到网络请求的HTTP头。 |
281+ 
282+**返回值:**
283+ 
284+| 类型 | 说明 |
285+| -- | -- |
286+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) * | 成功返回OH_AVMediaSource实例指针,失败返回nullptr。 |
287+ 
288+**示例:**
289+ 
290+```c
291+OH_AVHttpHeader* header = OH_AVHttpHeader_Create();
292+OH_AVMediaSource* mediaSource = OH_AVMediaSource_CreateWithUrl("http://xxx.mp4", header);
293+```
294+ 
295+### OH_AVMediaSource_CreateWithDataSource()
296+ 
297+```c
298+OH_AVMediaSource *OH_AVMediaSource_CreateWithDataSource(OH_AVDataSource *dataSource)
299+```
300+ 
301+**描述**
302+ 
303+通过[OH_AVDataSource](../apis-avcodec-kit/capi-codecbase-oh-avdatasource.md)创建媒体源。
304+ 
305+**系统能力:** SystemCapability.Multimedia.Media.Core
306+ 
307+**起始版本:** 23
308+ 
309+**参数:**
310+ 
311+| 参数项 | 描述 |
312+| -- | -- |
313+| [OH_AVDataSource](../apis-avcodec-kit/capi-codecbase-oh-avdatasource.md) *dataSource | OH_AVDataSource实例指针。 |
314+ 
315+**返回值:**
316+ 
317+| 类型 | 说明 |
318+| -- | -- |
319+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) * | 成功返回OH_AVMediaSource实例指针,失败返回nullptr。 |
320+ 
321+**示例:**
322+ 
323+```c
324+OH_AVDataSource *dataSource;
325+dataSource->size = 1024;
326+OH_AVMediaSource* mediaSource = OH_AVMediaSource_CreateWithDataSource(dataSource);
327+```
328+ 
329+### OH_AVMediaSource_CreateWithFd()
330+ 
331+```c
332+OH_AVMediaSource *OH_AVMediaSource_CreateWithFd(int32_t fd, int64_t offset, int64_t size)
333+```
334+ 
335+**描述**
336+ 
337+通过文件描述符(FileDescriptor)创建媒体源。
338+ 
339+**系统能力:** SystemCapability.Multimedia.Media.Core
340+ 
341+**起始版本:** 23
342+ 
343+**参数:**
344+ 
345+| 参数项 | 描述 |
346+| -- | -- |
347+| int32_t fd | 数据源的文件描述符。 |
348+| int64_t offset | 开始读取的文件偏移量。 |
349+| int64_t size | 文件大小(以字节为单位)。 |
350+ 
351+**返回值:**
352+ 
353+| 类型 | 说明 |
354+| -- | -- |
355+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) * | 成功返回OH_AVMediaSource实例指针,失败返回nullptr。<br> 1. fd无效。<br> 2. offset无效。<br> 3. size错误。<br> 4. 资源无效。<br> 5. 文件格式不支持。 |
356+ 
357+**示例:**
358+ 
359+```c
360+int32_t fd = 0;
361+int64_t offset = 1024;
362+int64_t size = 4096;
363+OH_AVMediaSource* mediaSource = OH_AVMediaSource_CreateWithFd(fd, offset, size);
364+```
365+ 
366+### OH_AVMediaSource_SetMimeType()
367+ 
368+```c
369+OH_AVErrCode OH_AVMediaSource_SetMimeType(OH_AVMediaSource *source, const char *mimetype)
370+```
371+ 
372+**描述**
373+ 
374+设置媒体MIME类型以处理扩展媒体源。
375+ 
376+**系统能力:** SystemCapability.Multimedia.Media.Core
377+ 
378+**起始版本:** 23
379+ 
380+**参数:**
381+ 
382+| 参数项 | 描述 |
383+| -- | -- |
384+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) *mediasource | OH_AVMediaSource实例指针。 |
385+| char *mimetype | 源的MIME类型。 |
386+ 
387+**返回值:**
388+ 
389+| 类型 | 说明 |
390+| -- | -- |
391+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:参数检查不通过。<br /> AV_ERR_UNSUPPORTED_FORMAT:不支持该mimetype 。 |
392+ 
393+**示例:**
394+ 
395+```c
396+OH_AVHttpHeader* header = OH_AVHttpHeader_Create();
397+OH_AVMediaSource* mediaSource = OH_AVMediaSource_CreateWithUrl("http://xxx.mp4", header);
398+OH_AVErrCode err = OH_AVMediaSource_SetMimeType(mediaSource, "application/m3u8");
399+```
400+ 
401+### OH_AVMediaSourceLoadingRequest_GetUrl
402+ 
403+```c
404+OH_AVErrCode OH_AVMediaSourceLoadingRequest_GetUrl(OH_AVMediaSourceLoadingRequest *request, const char **url)
405+```
406+ 
407+**描述:**
408+ 
409+获取请求的URL。
410+ 
411+**系统能力:** SystemCapability.Multimedia.Media.Core
412+ 
413+**起始版本:** 23
414+ 
415+**参数:**
416+ 
417+| 参数项 | 描述 |
418+| -- | -- |
419+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | OH_AVMediaSourceLoadingRequest实例。 |
420+| const char **url | 用于输出的URL字符串。 |
421+ 
422+**返回值:**
423+ 
424+| 类型 | 说明 |
425+| -- | -- |
426+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:如果执行成功。<br /> AV_ERR_INVALID_VAL:request为nullptr或不存在URL。 |
427+ 
428+**示例:**
429+ 
430+```c
431+std::string testUrl = "http://example.com/test.m3u8";
432+std::map<std::string, std::string> header = {
433+ {"User-Agent", "TestAgent"},
434+ {"Accept", "*/*"}
435+};
436+auto request = std::make_shared<LoadingRequestMock>(testUrl, header);
437+auto *requestObj = new MediaSourceLoadingRequestObject(request);
438+OH_AVMediaSourceLoadingRequest *ndkRequest = reinterpret_cast<OH_AVMediaSourceLoadingRequest *>(requestObj);
439+const char* redirectUrl = nullptr;
440+OH_AVMediaSourceLoadingRequest_GetUrl(ndkRequest, redirectUrl);
wangqg
wangqgwangqg2025年12月23日

代码缩进

likedislike
441+```
442+ 
443+### OH_AVMediaSourceLoadingRequest_GetHttpHeader
444+ 
445+```c
446+OH_AVErrCode OH_AVMediaSourceLoadingRequest_GetHttpHeader(OH_AVMediaSourceLoadingRequest *request, OH_AVHttpHeader **header)
447+```
448+ 
449+**描述:**
450+ 
451+获取请求的HTTP头部。
452+ 
453+**系统能力:** SystemCapability.Multimedia.Media.Core
454+ 
455+**起始版本:** 23
456+ 
457+**参数:**
458+ 
459+| 参数项 | 描述 |
460+| -- | -- |
461+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | OH_AVMediaSourceLoadingRequest实例。 |
462+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) **header | 用于HTTP请求的HTTP头部。 |
463+ 
464+**返回值:**
465+ 
466+| 类型 | 说明 |
467+| -- | -- |
468+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:如果执行成功。<br /> AV_ERR_INVALID_VAL:如果request是nullptr。 |
469+ 
470+**示例:**
471+ 
472+```c
473+std::string testUrl = "http://example.com/test.m3u8";
474+std::map<std::string, std::string> header = {
475+ {"User-Agent", "TestAgent"},
476+ {"Accept", "*/*"}
477+};
478+auto request = std::make_shared<LoadingRequestMock>(testUrl, header);
479+auto *requestObj = new MediaSourceLoadingRequestObject(request);
480+OH_AVMediaSourceLoadingRequest *ndkRequest = reinterpret_cast<OH_AVMediaSourceLoadingRequest *>(requestObj);
481+OH_AVHttpHeader* header = nullptr;
482+OH_AVMediaSourceLoadingRequest_GetHttpHeader(ndkRequest, &header);
wangqg
wangqgwangqg2025年12月23日

代码缩进

likedislike
483+```
484+ 
485+### OH_AVMediaSourceLoadingRequest_RespondData
486+ 
487+```c
488+int32_t OH_AVMediaSourceLoadingRequest_RespondData(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, int64_t offset, const uint8_t *data, uint64_t dataSize)
489+```
490+ 
491+**描述:**
492+ 
493+用于向AVPlayer发送请求数据的接口。
494+ 
495+**系统能力:** SystemCapability.Multimedia.Media.Core
496+ 
497+**起始版本:** 23
498+ 
499+**参数:**
500+ 
501+| 参数项 | 描述 |
502+| -- | -- |
503+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | 资源打开请求的参数。 |
504+| int64_t uuid | 资源句柄的ID。 |
505+| int64_t offset | 当前媒体数据相对于资源起始位置的偏移量。 |
506+| const uint8_t *data | 发送给播放器的媒体数据。 |
507+| uint64_t dataSize | 发送到播放器的数据长度。 |
508+ 
509+**返回值:**
510+ 
511+| 类型 | 说明 |
512+| -- | -- |
513+| int32_t | 当前读取的可接受字节数。<br /> 该值小于零表示失败。<br /> -2,表示播放器不再需要当前数据,客户端应停止当前读取进程;<br /> -3,表示玩家缓冲区已满,客户端应该等待下一次读取。 |
514+ 
515+**示例:**
516+ 
517+```c
518+std::string testUrl = "http://example.com/test.m3u8";
519+std::map<std::string, std::string> header = {
520+ {"User-Agent", "TestAgent"},
521+ {"Accept", "*/*"}
522+};
523+auto request = std::make_shared<LoadingRequestMock>(testUrl, header);
524+auto *requestObj = new MediaSourceLoadingRequestObject(request);
525+OH_AVMediaSourceLoadingRequest *ndkRequest = reinterpret_cast<OH_AVMediaSourceLoadingRequest *>(requestObj);
526+int64_t uuid = 0;
527+int64_t offset = 0;
528+uint8_t *fileBuffer = new uint8_t[1];
529+uint64_t dataSize = 1;
530+OH_AVMediaSourceLoadingRequest_RespondData(ndkRequest, uuid, offset, fileBuffer, dataSize);
wangqg
wangqgwangqg2025年12月23日

代码缩进

likedislike
531+```
532+ 
533+### OH_AVMediaSourceLoadingRequest_RespondHeader
534+ 
535+```c
536+void OH_AVMediaSourceLoadingRequest_RespondHeader(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, OH_AVHttpHeader *header, const char *redirectUrl)
537+```
538+ 
539+**描述:**
540+ 
541+应用用于向AVPlayer发送响应头部的接口,必须在首次调用[OH_AVMediaSourceLoadingRequest_RespondData](#oh_avmediasourceloadingrequest_responddata)之前调用。
542+ 
543+**系统能力:** SystemCapability.Multimedia.Media.Core
544+ 
545+**起始版本:** 23
546+ 
547+**参数:**
548+ 
549+| 参数项 | 描述 |
550+| -- | -- |
551+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | 资源打开请求的参数。 |
552+| int64_t uuid | 资源句柄的ID。 |
553+| [OH_AVHttpHeader](capi-avmediasource-oh-avhttpheader.md) *header | HTTP响应中的头部信息。应用可将该头部字段与底层支持的字段进行交集处理后再传入,也可直接传入所有对应的头部信息。 |
554+| const char *redirectUrl | HTTP响应中包含的重定向URL(如果存在)。 |
555+ 
556+**示例:**
557+ 
558+```c
559+std::string testUrl = "http://example.com/test.m3u8";
560+std::map<std::string, std::string> header = {
561+ {"User-Agent", "TestAgent"},
562+ {"Accept", "*/*"}
563+};
564+auto request = std::make_shared<LoadingRequestMock>(testUrl, header);
565+auto *requestObj = new MediaSourceLoadingRequestObject(request);
566+OH_AVMediaSourceLoadingRequest *ndkRequest = reinterpret_cast<OH_AVMediaSourceLoadingRequest *>(requestObj);
567+int64_t uuid = 0;
568+OH_AVHttpHeader *headers = nullptr;
569+const char* redirectUrl = nullptr;
570+OH_AVMediaSourceLoadingRequest_RespondHeader(ndkRequest, uuid, headers, redirectUrl);
wangqg
wangqgwangqg2025年12月23日

代码缩进

likedislike
571+```
572+ 
573+### OH_AVMediaSourceLoadingRequest_FinishLoading
574+ 
575+```c
576+void OH_AVMediaSourceLoadingRequest_FinishLoading(OH_AVMediaSourceLoadingRequest *request, int64_t uuid, AVLoadingRequestError error)
577+```
578+ 
579+**描述:**
580+ 
581+通知播放器当前请求的状态。在推送完单个资源的所有数据后,应用应发送[LOADING_ERROR_SUCCESS](#avloadingrequesterror)状态,以通知播放器资源推送已完成。
582+ 
583+**系统能力:** SystemCapability.Multimedia.Media.Core
584+ 
585+**起始版本:** 23
586+ 
587+**参数:**
588+ 
589+| 参数项 | 描述 |
590+| -- | -- |
591+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | 资源打开请求的参数。 |
592+| int64_t uuid | 资源句柄的ID。 |
593+| [AVLoadingRequestError](#avloadingrequesterror) error | 错误状态。 |
594+ 
595+**示例:**
596+ 
597+```c
598+std::string testUrl = "http://example.com/test.m3u8";
599+std::map<std::string, std::string> header = {
600+ {"User-Agent", "TestAgent"},
601+ {"Accept", "*/*"}
602+};
603+auto request = std::make_shared<LoadingRequestMock>(testUrl, header);
604+auto *requestObj = new MediaSourceLoadingRequestObject(request);
605+OH_AVMediaSourceLoadingRequest *ndkRequest = reinterpret_cast<OH_AVMediaSourceLoadingRequest *>(requestObj);
606+int64_t uuid = 0;
607+AVLoadingRequestError loadingError = AV_LOADING_ERROR_SUCCESS;
608+OH_AVMediaSourceLoadingRequest_FinishLoading(ndkRequest, uuid, loadingError);
wangqg
wangqgwangqg2025年12月23日

代码缩进

likedislike
609+```
610+ 
611+### OH_AVMediaSourceLoader_Create
612+ 
613+```c
614+OH_AVMediaSourceLoader *OH_AVMediaSourceLoader_Create(void)
615+```
616+ 
617+**描述:**
618+ 
619+创建一个[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)实例。
620+ 
621+**系统能力:** SystemCapability.Multimedia.Media.Core
622+ 
623+**起始版本:** 23
624+ 
625+**返回值:**
626+ 
627+| 类型 | 说明 |
628+| -- | -- |
629+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) | 创建成功,返回OH_AVMediaSourceLoader指针;创建失败,返回nullptr。 |
630+ 
631+**示例:**
632+ 
633+```c
634+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
635+```
636+ 
637+### OH_AVMediaSourceLoader_Destroy
638+ 
639+```c
640+OH_AVErrCode OH_AVMediaSourceLoader_Destroy(OH_AVMediaSourceLoader *loader)
641+```
642+ 
643+**描述:**
644+ 
645+释放[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)实例。
646+ 
647+**系统能力:** SystemCapability.Multimedia.Media.Core
648+ 
649+**起始版本:** 23
650+ 
651+**参数:**
652+ 
653+| 参数项 | 描述 |
654+| -- | -- |
655+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) *loader | 待释放的OH_AVMediaSourceLoader实例。 |
656+ 
657+**返回值:**
658+ 
659+| 类型 | 说明 |
660+| -- | -- |
661+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:成功释放。 <br /> AV_ERR_INVALID_VAL:loader为nullptr或释放失败。 |
662+ 
663+**示例:**
664+ 
665+```c
666+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
667+OH_AVMediaSourceLoader_Destroy(loader);
668+```
669+ 
670+### OH_AVMediaSource_SetMediaSourceLoader
671+ 
672+```c
673+OH_AVErrCode OH_AVMediaSource_SetMediaSourceLoader(OH_AVMediaSource *source, OH_AVMediaSourceLoader *loader)
674+```
675+ 
676+**描述:**
677+ 
678+为媒体源实例设置一个源加载器。
679+ 
680+**系统能力:** SystemCapability.Multimedia.Media.Core
681+ 
682+**起始版本:** 23
683+ 
684+**参数:**
685+ 
686+| 参数项 | 描述 |
687+| -- | -- |
688+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) *source | 需要网络代理的OH_AVMediaSource。 |
689+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) *loader | OH_AVMediaSourceLoader实例。 |
690+ 
691+**返回值:**
692+ 
693+| 类型 | 说明 |
694+| -- | -- |
695+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:设置成功。<br/> AV_ERR_INVALID_VAL:source或loader为nullptr,或操作失败。 |
696+ 
697+**示例:**
698+ 
699+```c
700+const char* url = "http://example.com/test.m3u8";
701+OH_AVMediaSource mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
702+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
703+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
704+```
705+ 
706+### OH_AVMediaSourceLoaderOnSourceOpenedCallback
707+ 
708+```c
709+typedef int64_t (*OH_AVMediaSourceLoaderOnSourceOpenedCallback)(OH_AVMediaSourceLoadingRequest *request, void *userData)
710+```
711+ 
712+**描述:**
713+ 
714+定义由服务端调用的SourceOpenCallback函数。客户端应处理传入的请求,并返回所打开资源的唯一句柄。客户端必须在处理完请求后立即返回该句柄。
715+ 
716+**系统能力:** SystemCapability.Multimedia.Media.Core
717+ 
718+**起始版本:** 23
719+ 
720+**参数:**
721+ 
722+| 参数项 | 描述 |
723+| -- | -- |
724+| [OH_AVMediaSourceLoadingRequest](capi-avmediasource-oh-avmediasourceloadingrequest.md) *request | 资源打开请求的参数,包含所请求资源的详细信息及数据推送方式。 |
725+| void *userData | 用户在[OH_AVMediaSourceLoader_SetSourceOpenCallback](#oh_avmediasourceloader_setsourceopencallback)中设置的数据。 |
726+ 
727+**返回值:**
728+ 
729+| 类型 | 说明 |
730+| -- | -- |
731+| int64_t | 当前资源打开请求的句柄,该句柄对请求对象是唯一的。<br/> 返回值大于0表示请求成功。<br/> 返回值小于或等于0表示失败。 |
732+ 
733+**示例:**
734+ 
735+```c
736+static int64_t AVMediaSourceLoaderOnSourceOpenedCallbackImpl(OH_AVMediaSourceLoadingRequest* request, void *userData)
737+{
738+ LOG("AVMediaSourceLoaderOnSourceOpenedCallbackImpl");
739+ return 0;
740+}
741+OH_AVPlayer *player = OH_AVPlayer_Create();
742+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
743+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
744+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
745+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
746+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
747+OH_AVMediaSourceLoader_SetSourceOpenCallback(loader, AVMediaSourceLoaderOnSourceOpenedCallbackImpl, this);
748+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
749+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

示例是不是太长了?把回调的内容减少一点吧

likedislike
750+```
751+ 
752+### OH_AVMediaSourceLoaderOnSourceReadCallback
753+ 
754+```c
755+typedef void (*OH_AVMediaSourceLoaderOnSourceReadCallback)(int64_t uuid, int64_t requestedOffset, int64_t requestedLength, void *userData)
756+```
757+ 
758+**描述:**
759+ 
760+定义由服务端调用的SourceReadCallback函数。客户端应记录读取请求,并在有足够数据时通过请求对象的[OH_AVMediaSourceLoadingRequest_RespondData](#oh_avmediasourceloadingrequest_responddata)和[OH_AVMediaSourceLoadingRequest_RespondHeader](#oh_avmediasourceloadingrequest_respondheader)方法推送数据。客户端必须在处理完请求后立即返回。
761+ 
762+**系统能力:** SystemCapability.Multimedia.Media.Core
763+ 
764+**起始版本:** 23
765+ 
766+**参数:**
767+ 
768+| 参数项 | 描述 |
769+| -- | -- |
770+| int64_t uuid | 资源句柄的ID。 |
771+| int64_t requestedOffset | 当前媒体数据相对于资源起始位置的偏移量。 |
772+| int64_t requestedLength | 当前请求的数据长度。<br />-1 表示已到达资源末尾,需通过[OH_AVMediaSourceLoadingRequest_FinishLoading](#oh_avmediasourceloadingrequest_finishloading)方法通知播放器推送结束。 |
773+| void *userData | 用户在[OH_AVMediaSourceLoader_SetSourceReadCallback](#oh_avmediasourceloader_setsourcereadcallback)中设置的数据。 |
774+ 
775+**示例:**
776+ 
777+```c
778+static void AVMediaSourceLoaderOnSourceReadCallbackImpl(int64_t uuid, int64_t requestedOffset, int64_t requestedLength, void *userData)
779+{
780+ LOG("AVMediaSourceLoaderOnSourceReadCallbackImpl length: %{public}lld ,position: %{public}lld", requestedLength, requestedOffset);
781+}
782+OH_AVPlayer *player = OH_AVPlayer_Create();
783+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
784+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
785+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
786+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
787+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
788+OH_AVMediaSourceLoader_SetSourceReadCallback(loader, AVMediaSourceLoaderOnSourceReadCallbackImpl, this);
789+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
790+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

示例是不是太长了?把回调的内容减少一点吧

likedislike
791+```
792+ 
793+### OH_AVMediaSourceLoaderOnSourceClosedCallback
794+ 
795+```c
796+typedef void (*OH_AVMediaSourceLoaderOnSourceClosedCallback)(int64_t uuid, void *userData)
797+```
798+ 
799+**描述:**
800+ 
801+定义由服务端调用的 SourceCloseCallback 函数。客户端应释放相关资源,并在处理完请求后立即返回。
802+ 
803+**系统能力:** SystemCapability.Multimedia.Media.Core
804+ 
805+**起始版本:** 23
806+ 
807+**参数:**
808+ 
809+| 参数项 | 描述 |
810+| -- | -- |
811+| int64_t uuid | 资源句柄的唯一ID。 |
812+| void *userData | 用户在[OH_AVMediaSourceLoader_SetSourceCloseCallback](#oh_avmediasourceloader_setsourceclosecallback)中设置的数据。 |
813+ 
814+**示例:**
815+ 
816+```c
817+static void AVMediaSourceLoaderOnSourceClosedCallbackImpl(int64_t uuid, void *userData)
818+{
819+ LOG("AVMediaSourceLoaderOnSourceClosedCallbackImpl uuid: %{public}lld", uuid);
820+}
821+OH_AVPlayer *player = OH_AVPlayer_Create();
822+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
823+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
824+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
825+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
826+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
827+OH_AVMediaSourceLoader_SetSourceCloseCallback(loader, AVMediaSourceLoaderOnSourceClosedCallbackImpl, this);
828+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
829+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

同上

likedislike
830+```
831+ 
832+### OH_AVMediaSourceLoader_SetSourceOpenCallback
833+ 
834+```c
835+OH_AVErrCode OH_AVMediaSourceLoader_SetSourceOpenCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceOpenedCallback callback, void *userData)
836+```
837+ 
838+**描述:**
839+ 
840+为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置打开回调函数。
841+ 
842+**系统能力:** SystemCapability.Multimedia.Media.Core
843+ 
844+**起始版本:** 23
845+ 
846+**参数:**
847+ 
848+| 参数项 | 描述 |
849+| -- | -- |
850+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) *loader | 要设置回调函数的OH_AVMediaSourceLoader实例。 |
851+| [OH_AVMediaSourceLoaderOnSourceOpenedCallback](#oh_avmediasourceloaderonsourceopenedcallback) callback | 要设置的打开回调函数。 |
852+| void *userData | 回调函数中使用的用户自定义数据。 |
853+ 
854+**返回值:**
855+ 
856+| 类型 | 说明 |
857+| -- | -- |
858+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。 <br /> AV_ERR_INVALID_VAL:loader为nullptr或操作失败。 |
859+ 
860+**示例:**
861+ 
862+```c
863+static int64_t AVMediaSourceLoaderOnSourceOpenedCallbackImpl(OH_AVMediaSourceLoadingRequest* request, void *userData)
864+{
865+ LOG("AVMediaSourceLoaderOnSourceOpenedCallbackImpl");
866+ return 0;
867+}
868+OH_AVPlayer *player = OH_AVPlayer_Create();
869+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
870+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
871+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
872+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
873+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
874+OH_AVMediaSourceLoader_SetSourceOpenCallback(loader, AVMediaSourceLoaderOnSourceOpenedCallbackImpl, this);
875+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
876+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

同上

likedislike
877+```
878+ 
879+### OH_AVMediaSourceLoader_SetSourceReadCallback
880+ 
881+```c
882+OH_AVErrCode OH_AVMediaSourceLoader_SetSourceReadCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceReadCallback callback, void *userData)
883+```
884+ 
885+**描述:**
886+ 
887+为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置读取回调函数。
888+ 
889+**系统能力:** SystemCapability.Multimedia.Media.Core
890+ 
891+**起始版本:** 23
892+ 
893+**参数:**
894+ 
895+| 参数项 | 描述 |
896+| -- | -- |
897+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) *loader | 要设置回调函数的OH_AVMediaSourceLoader实例。 |
898+| [OH_AVMediaSourceLoaderOnSourceReadCallback](#oh_avmediasourceloaderonsourcereadcallback) callback | 要设置的读取回调函数。 |
899+| void *userData | 回调函数中使用的用户自定义数据。 |
900+ 
901+**返回值:**
902+ 
903+| 类型 | 说明 |
904+| -- | -- |
905+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。 <br /> AV_ERR_INVALID_VAL:loader为nullptr或操作失败。 |
906+ 
907+**示例:**
908+ 
909+```c
910+static void AVMediaSourceLoaderOnSourceReadCallbackImpl(int64_t uuid, int64_t requestedOffset, int64_t requestedLength, void *userData)
911+{
912+ LOG("AVMediaSourceLoaderOnSourceReadCallbackImpl length: %{public}lld ,position: %{public}lld", requestedLength, requestedOffset);
913+}
914+OH_AVPlayer *player = OH_AVPlayer_Create();
915+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
916+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
917+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
918+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
919+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
920+OH_AVMediaSourceLoader_SetSourceReadCallback(loader, AVMediaSourceLoaderOnSourceReadCallbackImpl, this);
921+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
922+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

同上

likedislike
923+```
924+ 
925+### OH_AVMediaSourceLoader_SetSourceCloseCallback
926+ 
927+```c
928+OH_AVErrCode OH_AVMediaSourceLoader_SetSourceCloseCallback(OH_AVMediaSourceLoader *loader, OH_AVMediaSourceLoaderOnSourceClosedCallback callback, void *userData)
929+```
930+ 
931+**描述:**
932+ 
933+为[OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md)设置关闭回调函数。
934+ 
935+**系统能力:** SystemCapability.Multimedia.Media.Core
936+ 
937+**起始版本:** 23
938+ 
939+**参数:**
940+ 
941+| 参数项 | 描述 |
942+| -- | -- |
943+| [OH_AVMediaSourceLoader](capi-avmediasource-oh-avmediasourceloader.md) *loader | 要设置回调函数的OH_AVMediaSourceLoader实例。 |
944+| [OH_AVMediaSourceLoaderOnSourceClosedCallback](#oh_avmediasourceloaderonsourceclosedcallback) callback | 要设置的关闭回调函数。 |
945+| void *userData | 回调函数中使用的用户自定义数据。 |
946+ 
947+**返回值:**
948+ 
949+| 类型 | 说明 |
950+| -- | -- |
951+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。 <br /> AV_ERR_INVALID_VAL:loader为nullptr或操作失败。 |
952+ 
953+**示例:**
954+ 
955+```c
956+static void AVMediaSourceLoaderOnSourceClosedCallbackImpl(int64_t uuid, void *userData)
957+{
958+ LOG("AVMediaSourceLoaderOnSourceClosedCallbackImpl uuid: %{public}lld", uuid);
959+}
960+OH_AVPlayer *player = OH_AVPlayer_Create();
961+OH_AVPlayer_SetOnInfoCallback(player, AVPlayerOnInfoCallbackImpl, this);
962+OH_AVPlayer_SetOnErrorCallback(player, AVPlayerOnErrorCallbackImpl, this);
963+OH_AVHttpHeader *headers = OH_AVHttpHeader_Create();
964+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl(url, headers);
965+OH_AVMediaSourceLoader* loader = OH_AVMediaSourceLoader_Create();
966+OH_AVMediaSourceLoader_SetSourceCloseCallback(loader, AVMediaSourceLoaderOnSourceClosedCallbackImpl, this);
967+OH_AVMediaSource_SetMediaSourceLoader(mediaSource, loader);
968+OH_AVPlayer_SetMediaSource(player, mediaSource);
wangqg
wangqgwangqg2025年12月23日

同上

likedislike
969+```
@@ -0,0 +1,22 @@
1+# AVMediaBase
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+## 概述
10+ 
11+定义媒体源关键字。
12+ 
13+**系统能力:** SystemCapability.Multimedia.Media.Core
14+ 
15+**起始版本:** 23
16+ 
17+## 文件汇总
18+ 
19+| 名称 | 描述 |
20+| -- | -- |
21+| [avmetakeys.h](capi-avmetakeys-h.md) | 定义音视频元数据键。 |
22+| [avmedia_base.h](capi-avmedia-base-h.md) | 定义AVMediaBase常量。 |
@@ -0,0 +1,21 @@
1+# OH_AVHttpHeader
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+```c
10+typedef struct OH_AVHttpHeader OH_AVHttpHeader
11+```
12+ 
13+## 概述
14+ 
15+声明HTTP头部类型。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMediaSource](capi-avmediasource.md)
20+ 
21+**所在头文件:** [avmedia_source.h](capi-avmedia-source-h.md)
@@ -0,0 +1,21 @@
1+# OH_AVMediaSource
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+```c
10+typedef struct OH_AVMediaSource OH_AVMediaSource
11+```
12+ 
13+## 概述
14+ 
15+声明媒体源类型。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMediaSource](capi-avmediasource.md)
20+ 
21+**所在头文件:** [avmedia_source.h](capi-avmedia-source-h.md)
@@ -0,0 +1,21 @@
1+# OH_AVMediaSourceLoader
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+```c
10+typedef struct OH_AVMediaSourceLoader OH_AVMediaSourceLoader
11+```
12+ 
13+## 概述
14+ 
15+声明媒体数据加载器类型,由应用实现。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMediaSource](capi-avmediasource.md)
20+ 
21+**所在头文件:** [avmedia_source.h](capi-avmedia-source-h.md)
@@ -0,0 +1,21 @@
1+# OH_AVMediaSourceLoadingRequest
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+```c
10+typedef struct OH_AVMediaSourceLoadingRequest OH_AVMediaSourceLoadingRequest
11+```
12+ 
13+## 概述
14+ 
15+加载请求对象。应用通过该对象获取所请求资源的位置。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMediaSource](capi-avmedia-source.md)
20+ 
21+**所在头文件:** [avmedia_source.h](capi-avmedia-source-h.md)
@@ -0,0 +1,21 @@
1+# AVMediaSource
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+## 概述
10+ 
11+定义AVMediaSource的API。
12+ 
13+**系统能力:** SystemCapability.Multimedia.Media.Core
14+ 
15+**起始版本:** 23
16+ 
17+## 文件汇总
18+ 
19+| 名称 | 描述 |
20+| -- | -- |
21+| [avmedia_source.h](capi-avmedia-source-h.md) | 定义AVMediaSource的结构体和枚举类型。 |
@@ -22,6 +22,19 @@
22 22 
23## 汇总23## 汇总
24 24 
25+### 结构体
26+ 
27+| 名称 | typedef关键字 | 描述 |
28+| -- | -- | -- |
29+| [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md) | OH_AVMetadataExtractor_OutputParam | 定义[AVMetadataExtractor](capi-avmetadataextractor.md)获取缩略图的输出参数。 |
30+| [OH_AVMetadataExtractor_FrameInfo](capi-avmetadataextractor-oh-avmetadataextractor-frameinfo.md) | OH_AVMetadataExtractor_FrameInfo | 定义从视频中获取的缩略图信息。 |
31+ 
32+### 枚举
33+ 
34+| 名称 | typedef关键字 | 描述 |
35+| -- | -- | -- |
36+| [OH_AVMetadataExtractor_FetchState](#oh_avmetadataextractor_fetchstate) | OH_AVMetadataExtractor_FetchState | 获取缩略图时的状态枚举。 |
37+ 
25### 变量38### 变量
26 39 
27| 名称 | 描述 |40| 名称 | 描述 |
@@ -48,3 +61,20 @@
48| static const char* OH_AVMETADATA_EXTRACTOR_LOCATION_LATITUDE = "latitude" | 获取地理位置中的纬度值的关键字,对应值类型为float。<br>**起始版本:** 18 |61| static const char* OH_AVMETADATA_EXTRACTOR_LOCATION_LATITUDE = "latitude" | 获取地理位置中的纬度值的关键字,对应值类型为float。<br>**起始版本:** 18 |
49| static const char* OH_AVMETADATA_EXTRACTOR_LOCATION_LONGITUDE = "longitude" | 获取地理位置中的经度值的关键字,对应值类型为float。<br>**起始版本:** 18 |62| static const char* OH_AVMETADATA_EXTRACTOR_LOCATION_LONGITUDE = "longitude" | 获取地理位置中的经度值的关键字,对应值类型为float。<br>**起始版本:** 18 |
50 63 
64+## 枚举说明
65+ 
66+### OH_AVMetadataExtractor_FetchState
67+ 
68+**描述:**
69+ 
70+帧提取操作的结果状态。
71+ 
72+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
73+ 
74+**起始版本:** 23
75+ 
76+| 枚举项 | 描述 |
77+| -- | -- |
78+| OH_AVMETADATA_EXTRACTOR_FETCH_FAILED = 0 | 提取操作失败。 |
79+| OH_AVMETADATA_EXTRACTOR_FETCH_SUCCEEDED = 1 | 提取操作成功。 |
80+| OH_AVMETADATA_EXTRACTOR_FETCH_CANCELED = 2 | 提取操作被用户取消。 |
@@ -37,6 +37,17 @@
37| [OH_AVErrCode OH_AVMetadataExtractor_FetchMetadata(OH_AVMetadataExtractor* extractor, OH_AVFormat* avMetadata)](#oh_avmetadataextractor_fetchmetadata) | 从媒体资源中获取元数据。此函数必须在[OH_AVMetadataExtractor_SetFDSource](#oh_avmetadataextractor_setfdsource)之后调用。 |37| [OH_AVErrCode OH_AVMetadataExtractor_FetchMetadata(OH_AVMetadataExtractor* extractor, OH_AVFormat* avMetadata)](#oh_avmetadataextractor_fetchmetadata) | 从媒体资源中获取元数据。此函数必须在[OH_AVMetadataExtractor_SetFDSource](#oh_avmetadataextractor_setfdsource)之后调用。 |
38| [OH_AVErrCode OH_AVMetadataExtractor_FetchAlbumCover(OH_AVMetadataExtractor* extractor, OH_PixelmapNative** pixelMap)](#oh_avmetadataextractor_fetchalbumcover) | 获取音频专辑封面。此函数必须在[OH_AVMetadataExtractor_SetFDSource](#oh_avmetadataextractor_setfdsource)之后调用。 |38| [OH_AVErrCode OH_AVMetadataExtractor_FetchAlbumCover(OH_AVMetadataExtractor* extractor, OH_PixelmapNative** pixelMap)](#oh_avmetadataextractor_fetchalbumcover) | 获取音频专辑封面。此函数必须在[OH_AVMetadataExtractor_SetFDSource](#oh_avmetadataextractor_setfdsource)之后调用。 |
39| [OH_AVErrCode OH_AVMetadataExtractor_Release(OH_AVMetadataExtractor* extractor)](#oh_avmetadataextractor_release) | 释放用于OH_AVMetadataExtractor的资源并销毁OH_AVMetadataExtractor实例。 |39| [OH_AVErrCode OH_AVMetadataExtractor_Release(OH_AVMetadataExtractor* extractor)](#oh_avmetadataextractor_release) | 释放用于OH_AVMetadataExtractor的资源并销毁OH_AVMetadataExtractor实例。 |
40+| [OH_AVMetadataExtractor_OutputParam* OH_AVMetadataExtractor_OutputParam_Create()](#oh_avmetadataextractor_outputparam_create) | 创建[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)实例。 |
41+| [void OH_AVMetadataExtractor_OutputParam_Destroy(OH_AVMetadataExtractor_OutputParam* outputParam)](#oh_avmetadataextractor_outputparam_destroy) | 释放[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)实例。 |
42+| [bool OH_AVMetadataExtractor_OutputParam_SetSize(OH_AVMetadataExtractor_OutputParam* outputParam, int32_t width, int32_t height)](#oh_avmetadataextractor_outputparam_setsize) | 设置 [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)实例的期望输出尺寸。 |
43+| [OH_AVErrCode OH_AVMetadataExtractor_FetchFrameByTime(OH_AVMetadataExtractor* extractor, int64_t timeUs, OH_AVMedia_SeekMode seekmode, const OH_AVMetadataExtractor_OutputParam* outputParam, OH_PixelmapNative** pixelMap)](#oh_avmetadataextractor_fetchframebytime) | 从视频源中提取指定时间点的图像。 |
44+| [typedef void (\*OH_AVMetadataExtractor_OnFrameFetched)(OH_AVMetadataExtractor\* extractor, const OH_AVMetadataExtractor_FrameInfo\* frameInfo, OH_AVErrCode code, void\* userData)](#oh_avmetadataextractor_onframefetched) | 定义由AVMetadataExtractor获取的帧的回调函数。 |
45+| [OH_AVErrCode OH_AVMetadataExtractor_FetchFramesByTimes(OH_AVMetadataExtractor* extractor, int64_t timeUs[], uint16_t timesUsSize, OH_AVMedia_SeekMode seekmode, const OH_AVMetadataExtractor_OutputParam* outputParam, OH_AVMetadataExtractor_OnFrameFetched onFrameInfoCallback, void* userData)](#oh_avmetadataextractor_fetchframesbytimes) | 从视频源中异步提取多个指定时间点的图像。 |
46+| [void OH_AVMetadataExtractor_CancelAllFetchFrames(OH_AVMetadataExtractor* extractor)](#oh_avmetadataextractor_cancelallfetchframes) | 取消所有由[OH_AVMetadataExtractor_FetchFramesByTimes](#oh_avmetadataextractor_fetchframesbytimes)发起的待处理或正在进行的缩略图获取请求。 |
47+| [OH_AVFormat *OH_AVMetadataExtractor_GetTrackDescription(OH_AVMetadataExtractor *extractor, uint32_t index)](#oh_avmetadataextractor_gettrackdescription) | 从媒体源中获取指定索引的轨道描述信息。 |
48+| [OH_AVFormat *OH_AVMetadataExtractor_GetCustomInfo(OH_AVMetadataExtractor *extractor)](#oh_avmetadataextractor_getcustominfo) | 从媒体源中获取自定义元数据信息。 |
49+| [OH_AVErrCode OH_AVMetadataExtractor_SetMediaSource(OH_AVMetadataExtractor *extractor, OH_AVMediaSource *source)](#oh_avmetadataextractor_setmediasource) | 为提取器设置媒体源。 |
50+ 
40 51 
41## 函数说明52## 函数说明
42 53 
@@ -177,4 +188,370 @@ OH_AVErrCode OH_AVMetadataExtractor_Release(OH_AVMetadataExtractor* extractor)
177| -- | -- |188| -- | -- |
178| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br> AV_ERR_INVALID_VAL: 输入的extractor为空指针或参数无效。 |189| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br> AV_ERR_INVALID_VAL: 输入的extractor为空指针或参数无效。 |
179 190 
191+### OH_AVMetadataExtractor_OutputParam_Create()
180 192 
193+```c
194+OH_AVMetadataExtractor_OutputParam* OH_AVMetadataExtractor_OutputParam_Create(void)
195+```
196+ 
197+**描述**
198+ 
199+创建[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)实例。
200+ 
201+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
202+ 
203+**起始版本:** 23
204+ 
205+**返回值:**
206+ 
207+| 类型 | 说明 |
208+| -- | -- |
209+| [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md) * | 返回指向OH_AVMetadataExtractor_OutputParam实例的指针。 |
210+ 
211+**示例:**
212+ 
213+```c
214+OH_AVMetadataExtractor_OutputParam* outputParam = OH_AVMetadataExtractor_OutputParam_Create();
215+```
216+ 
217+### OH_AVMetadataExtractor_OutputParam_Destroy()
218+ 
219+```c
220+void OH_AVMetadataExtractor_OutputParam_Destroy(OH_AVMetadataExtractor_OutputParam* outputParam)
221+```
222+ 
223+**描述**
224+ 
225+释放[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)实例。
226+ 
227+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
228+ 
229+**起始版本:** 23
230+ 
231+**参数:**
232+ 
233+| 参数项 | 描述 |
234+| -- | -- |
235+| [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)* outputParam | 指OH_AVMetadataExtractor_OutputParam实例的指针。 |
236+ 
237+**示例:**
238+ 
239+```c
240+OH_AVMetadataExtractor_OutputParam* outputParam = OH_AVMetadataExtractor_OutputParam_Create();
241+OH_AVMetadataExtractor_OutputParam_Destroy(outputParam);
242+```
243+ 
244+### OH_AVMetadataExtractor_OutputParam_SetSize()
245+ 
246+```c
247+bool OH_AVMetadataExtractor_OutputParam_SetSize(OH_AVMetadataExtractor_OutputParam* outputParam, int32_t width, int32_t height)
248+```
249+ 
250+**描述**
251+ 
252+设置OH_AVMetadataExtractor_OutputParam实例的期望输出尺寸。
253+若width或height小于0,则使用原始宽度或高度。
254+若width或height等于0,则保持宽高比按比例缩放。
255+若width和height均大于0,则使用输入的width和height参数缩放图像。
256+ 
257+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
258+ 
259+**起始版本:** 23
260+ 
261+**参数:**
262+ 
263+| 参数项 | 描述 |
264+| -- | -- |
265+| [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md) * outputParam | 指向OH_AVMetadataExtractor_OutputParam实例的指针。 |
266+| int32_t width | 输出图像的期望宽度,如有必要可进行缩放。 |
267+| int32_t height | 输出图像的期望高度,如有必要可进行缩放。 |
268+ 
269+**返回值:**
270+ 
271+| 类型 | 说明 |
272+| -- | -- |
273+| bool | true:执行成功。<br />false:执行失败。<br>可能的失败原因:<br>outputParam为nullptr。 |
274+ 
275+**示例:**
276+ 
277+```c
278+OH_AVMetadataExtractor_OutputParam* outputParams = OH_AVMetadataExtractor_OutputParam_Create();
279+bool ret = OH_AVMetadataExtractor_OutputParam_SetSize(outputParams, 1920, 1080);
280+```
281+ 
282+### OH_AVMetadataExtractor_FetchFrameByTime()
283+ 
284+```c
285+OH_AVErrCode OH_AVMetadataExtractor_FetchFrameByTime(OH_AVMetadataExtractor* extractor, int64_t timeUs, OH_AVMedia_SeekMode seekmode, const OH_AVMetadataExtractor_OutputParam* outputParam, OH_PixelmapNative** pixelMap)
286+```
287+ 
288+**描述**
289+ 
290+从视频源中提取指定时间点的图像。该函数必须在设置资源之后使用。
291+ 
292+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
293+ 
294+**起始版本:** 23
295+ 
296+**参数:**
297+ 
298+| 参数项 | 描述 |
299+| -- | -- |
300+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。 |
301+| int64_t timeUs | 要从视频资源中提取图像的时间位置(单位:微秒)。 |
302+| [OH_AVMedia_SeekMode](capi-avmedia-base-h.md#oh_avmedia_seekmode) seekmode | 定义指定时间与关键帧之间关系的跳转模式。详见[OH_AVMedia_SeekMode](capi-avmedia-base-h.md#oh_avmedia_seekmode)。 |
303+| const [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md) * outputParam | 图像的输出参数,例如图像的高度或者宽度。详见[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)。若为空指针,使用视频的原始尺寸。 |
304+| [OH_PixelmapNative](../apis-image-kit/capi-image-nativemodule-oh-pixelmapnative.md)** pixelMap | 用于接收从视频源提取的图像,详见[OH_PixelmapNative](../apis-image-kit/capi-image-nativemodule-oh-pixelmapnative.md)。 |
305+ 
306+**返回值:**
307+ 
308+| 类型 | 说明 |
309+| -- | -- |
310+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:输入参数无效。<br /> AV_ERR_OPERATE_NOT_PERMIT:操作不允许。<br /> AV_ERR_UNSUPPORTED_FORMAT:格式不支持。<br /> AV_ERR_SERVICE_DIED:服务已终止。<br /> AV_ERR_IO_CLEARTEXT_NOT_PERMITTED:不允许HTTP明文流量。 |
311+ 
312+**示例:**
313+ 
314+```c
315+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
316+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
317+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
318+int64_t timeUs = 0;
319+OH_AVMedia_SeekMode seekmode = static_cast<OH_AVMedia_SeekMode>(1);
320+OH_AVMetadataExtractor_OutputParam* outputParams = OH_AVMetadataExtractor_OutputParam_Create();
321+bool ret = OH_AVMetadataExtractor_OutputParam_SetSize(outputParams, 1920, 1080);
322+OH_PixelmapNative *pixelmapNative = nullptr;
323+OH_AVErrCode errCode = OH_AVMetadataExtractor_FetchFrameByTime(extractor, timeUs, seekmode, outputParams, &pixelmapNative);
324+```
325+ 
326+### OH_AVMetadataExtractor_OnFrameFetched()
327+ 
328+```c
329+typedef void (*OH_AVMetadataExtractor_OnFrameFetched)(OH_AVMetadataExtractor* extractor, const OH_AVMetadataExtractor_FrameInfo* frameInfo, OH_AVErrCode code, void* userData)
330+```
331+ 
332+**描述**
333+ 
334+定义用于获取[AVMetadataExtractor](capi-avmetadataextractor.md)捕获帧的回调函数。
335+ 
336+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
337+ 
338+**起始版本:** 23
339+ 
340+**参数:**
341+ 
342+| 参数项 | 描述 |
343+| -- | -- |
344+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。 |
345+| const [OH_AVMetadataExtractor_FrameInfo](capi-avmetadataextractor-oh-avmetadataextractor-frameinfo.md)* frameInfo | 批量获取缩略图结果。 |
346+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) code | 错误码。 |
347+| void* userData | 回调的用户数据指针,会原样传回给回调处理者,可为nullptr。 |
348+ 
349+**示例:**
350+ 
351+```c
352+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
353+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
354+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
355+int64_t timeUs[] = {0};
356+uint16_t timesUsSize = sizeof(timeUs);
357+OH_AVMedia_SeekMode seekmode = static_cast<OH_AVMedia_SeekMode>(1);
358+OH_AVMetadataExtractor_OutputParam* outputParams = OH_AVMetadataExtractor_OutputParam_Create();
359+bool ret = OH_AVMetadataExtractor_OutputParam_SetSize(outputParams, 1920, 1080);
360+auto OnFrameFetchedCallback = [](OH_AVMetadataExtractor* extractor, const OH_AVMetadataExtractor_FrameInfo* frameInfo, OH_AVErrCode code, void* userData) {
361+ if (userData != nullptr) {
362+ int* callbackCount = static_cast<int*>(userData);
363+ (*callbackCount)++;
364+ }
365+};
366+OH_PixelmapNative *pixelmapNative = nullptr;
367+OH_AVErrCode errCode = OH_AVMetadataExtractor_FetchFrameByTime(extractor, timeUs, timesUsSize, seekmode, outputParams, OnFrameFetchedCallback, &pixelmapNative);
368+```
369+ 
370+### OH_AVMetadataExtractor_FetchFramesByTimes()
371+ 
372+```c
373+OH_AVErrCode OH_AVMetadataExtractor_FetchFramesByTimes(OH_AVMetadataExtractor* extractor, int64_t timeUs[], uint16_t timesUsSize, OH_AVMedia_SeekMode seekmode, const OH_AVMetadataExtractor_OutputParam* outputParam, OH_AVMetadataExtractor_OnFrameFetched onFrameInfoCallback, void* userData)
374+```
375+ 
376+**描述**
377+ 
378+从视频源中异步提取多个指定时间点的图像。该函数必须在设置资源之后使用。
379+ 
380+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
381+ 
382+**起始版本:** 23
383+ 
384+**参数:**
385+ 
386+| 参数项| 描述|
387+| -- | -- |
388+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。|
389+| int64_t timeUs[]| 从视频源提取图像时的时间点数组(单位:微秒)。 |
390+| uint16_t timesUsSize| 输入时间点数组的长度。 |
391+| [OH_AVMedia_SeekMode](capi-avmedia-base-h.md#oh_avmedia_seekmode) seekmode | 定义每个给定时间与关键帧之间关系的跳转选项,详见[OH_AVMedia_SeekMode](capi-avmedia-base-h.md#oh_avmedia_seekmode)。 |
392+| const [OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)* outputParam | 图像的输出参数,例如图像的高度或者宽度。详见[OH_AVMetadataExtractor_OutputParam](capi-avmetadataextractor-oh-avmetadataextractor-outputparam.md)。若该参数为空指针,则获取的帧使用视频原始尺寸。 |
393+| [OH_AVMetadataExtractor_OnFrameFetched](#oh_avmetadataextractor_onframefetched) onFrameInfoCallback | 每帧提取完成或提取失败后调用的回调函数。 |
394+| void* userData| 传递给回调函数的用户自定义数据指针。 |
395+ 
396+**返回值:**
397+ 
398+| 类型| 说明|
399+| -- | -- |
400+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:输入参数无效。<br /> AV_ERR_SERVICE_DIED:服务已终止。<br /> AV_ERR_IO_CLEARTEXT_NOT_PERMITTED:不允许HTTP明文流量。<br /> AV_ERR_OPERATE_NOT_PERMIT:操作不允许。由[onFrameInfoCallback](#oh_avmetadataextractor_onframefetched)返回。<br /> AV_ERR_UNSUPPORTED_FORMAT:格式不支持。由onFrameInfoCallback返回。<br /> AV_ERR_TIMEOUT:执行超时。由onFrameInfoCallback返回。 |
401+ 
402+**示例:**
403+ 
404+```c
405+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
406+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
407+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
408+int64_t timeUs[] = {0};
409+uint16_t timesUsSize = sizeof(timeUs);
410+OH_AVMedia_SeekMode seekmode = static_cast<OH_AVMedia_SeekMode>(1);
411+OH_AVMetadataExtractor_OutputParam* outputParams = OH_AVMetadataExtractor_OutputParam_Create();
412+bool ret = OH_AVMetadataExtractor_OutputParam_SetSize(outputParams, 1920, 1080);
413+auto OnFrameFetchedCallback = [](OH_AVMetadataExtractor* extractor, const OH_AVMetadataExtractor_FrameInfo* frameInfo, OH_AVErrCode code, void* userData) {
414+ if (userData != nullptr) {
415+ int* callbackCount = static_cast<int*>(userData);
416+ (*callbackCount)++;
417+ }
418+};
419+OH_PixelmapNative *pixelmapNative = nullptr;
420+OH_AVErrCode errCode = OH_AVMetadataExtractor_FetchFrameByTime(extractor, timeUs, timesUsSize, seekmode, outputParams, OnFrameFetchedCallback, &pixelmapNative);
421+```
422+ 
423+### OH_AVMetadataExtractor_CancelAllFetchFrames()
424+ 
425+```c
426+void OH_AVMetadataExtractor_CancelAllFetchFrames(OH_AVMetadataExtractor* extractor)
427+```
428+ 
429+**描述**
430+ 
431+取消所有由[OH_AVMetadataExtractor_FetchFramesByTimes](#oh_avmetadataextractor_fetchframesbytimes)发起的批量获取图像操作。在[OH_AVMetadataExtractor_OnFrameFetched](#oh_avmetadataextractor_onframefetched)回调中,挂起的获取操作被取消,并标记结果为已取消。
432+ 
433+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
434+ 
435+**起始版本:** 23
436+ 
437+**参数:**
438+ 
439+| 参数项 | 描述 |
440+| -- | -- |
441+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。 |
442+ 
443+**示例:**
444+ 
445+```c
446+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
447+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
448+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
449+OH_AVMetadataExtractor_CancelAllFetchFrames(extractor);
450+```
451+ 
452+### OH_AVMetadataExtractor_GetTrackDescription()
453+ 
454+```c
455+OH_AVFormat *OH_AVMetadataExtractor_GetTrackDescription(OH_AVMetadataExtractor *extractor, uint32_t index)
456+```
457+ 
458+**描述**
459+ 
460+从媒体源中获取指定索引的轨道描述信息。该函数必须在设置资源之后使用。
461+ 
462+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
463+ 
464+**起始版本:** 23
465+ 
466+**参数:**
467+ 
468+| 参数项 | 描述 |
469+| -- | -- |
470+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。 |
471+| uint32_t index | 要获取的轨道描述的索引。 |
472+ 
473+**返回值:**
474+ 
475+| 类型 | 说明 |
476+| -- | -- |
477+| [OH_AVFormat](../apis-avcodec-kit/capi-core-oh-avformat.md)* | 成功时返回包含轨道描述信息的OH_AVFormat实例指针,失败时返回nullptr。<br/>可能的失败原因:<br/> extractor为nullptr。<br/> 未设置媒体源。<br/> 未找到自定义信息。 |
478+ 
479+**示例:**
480+ 
481+```c
482+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
483+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
484+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
485+OH_AVFormat* format = OH_AVMetadataExtractor_GetTrackDescription(extractor, 0);
486+```
487+ 
488+### OH_AVMetadataExtractor_GetCustomInfo()
489+ 
490+```c
491+OH_AVFormat *OH_AVMetadataExtractor_GetCustomInfo(OH_AVMetadataExtractor *extractor)
492+```
493+ 
494+**描述**
495+ 
496+从媒体源中获取自定义元数据信息。该函数必须在设置资源之后使用。
497+ 
498+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
499+ 
500+**起始版本:** 23
501+ 
502+**参数:**
503+ 
504+| 参数项 | 描述 |
505+| -- | -- |
506+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md) *extractor | 指向OH_AVMetadataExtractor实例的指针。 |
507+ 
508+**返回值:**
509+ 
510+| 类型 | 说明 |
511+| -- | -- |
512+| [OH_AVFormat](../apis-avcodec-kit/capi-core-oh-avformat.md)* | 成功时返回包含轨道描述信息的OH_AVFormat实例指针,失败时返回nullptr。<br/>可能的失败原因:<br/> extractor为nullptr。<br/> 未设置媒体源。<br/> 未找到自定义信息。 |
513+ 
514+**示例:**
515+ 
516+```c
517+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
518+int32_t fd = open("/xxx/xxx.mp4", O_RDONLY);
519+OH_AVErrCode err = OH_AVMetadataExtractor_SetFDSource(extractor, fd, 0, -1);
520+OH_AVFormat* avMetadata = OH_AVMetadataExtractor_GetCustomInfo(extractor);
521+```
522+ 
523+### OH_AVMetadataExtractor_SetMediaSource()
524+ 
525+```c
526+OH_AVErrCode OH_AVMetadataExtractor_SetMediaSource(OH_AVMetadataExtractor *extractor, OH_AVMediaSource *source)
527+```
528+ 
529+**描述**
530+ 
531+为提取器设置媒体源。
532+ 
533+**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
534+ 
535+**起始版本:** 23
536+ 
537+**参数:**
538+ 
539+| 参数项 | 描述 |
540+| -- | -- |
541+| [OH_AVMetadataExtractor](capi-avmetadataextractor-oh-avmetadataextractor.md)* extractor | 指向OH_AVMetadataExtractor实例的指针。 |
542+| [OH_AVMediaSource](capi-avmediasource-oh-avmediasource.md) *source | 要设置的媒体源。 |
543+ 
544+**返回值:**
545+ 
546+| 类型 | 说明 |
547+| -- | -- |
548+| [OH_AVErrCode](../apis-avcodec-kit/capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:执行成功。<br /> AV_ERR_INVALID_VAL:输入的extractor为空指针或输入的source无效。 |
549+ 
550+**示例:**
551+ 
552+```c
553+OH_AVHttpHeader *header = OH_AVHttpHeader_Create();
554+OH_AVMediaSource *mediaSource = OH_AVMediaSource_CreateWithUrl("http://xxx.mp4", header);
555+OH_AVMetadataExtractor* extractor = OH_AVMetadataExtractor_Create();
556+OH_AVErrCode avErrCode = OH_AVMetadataExtractor_SetMediaSource(extractor, mediaSource);
557+```
@@ -0,0 +1,32 @@
1+# OH_AVMetadataExtractor_FrameInfo
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: @xushubo; @chennotfound-->
5+<!--Designer: @dongyu_dy-->
6+<!--Tester: @xchaosioda-->
7+<!--Adviser: @w_Machine_cc-->
8+ 
9+```c
10+typedef struct OH_AVMetadataExtractor_FrameInfo {...} OH_AVMetadataExtractor_FrameInfo
11+```
12+ 
13+## 概述
14+ 
15+定义从视频中提取出的帧的信息。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMetadataExtractor](capi-avmetadataextractor.md)
20+ 
21+**所在头文件:** [avmetadata_extractor_base.h](capi-avmetadata-extractor-base-h.md)
22+ 
23+## 汇总
24+ 
25+### 成员变量
26+ 
27+| 名称 | 描述 |
28+| -- | -- |
29+| int64_t requestTimeUs | 用户传入的请求时间。 |
30+| int64_t actualTimeUs | 实际提取到的帧的时间;若提取失败,则为-1。 |
31+| [OH_PixelmapNative](../apis-image-kit/capi-image-nativemodule-oh-pixelmapnative.md) * image | 从视频中提取出的帧图像;若提取失败,则为nullptr。 |
32+| [OH_AVMetadataExtractor_FetchState](capi-avmetadata-extractor-base-h.md#oh_avmetadataextractor_fetchstate) result | 本次帧提取操作的结果状态。 |
@@ -0,0 +1,21 @@
1+# OH_AVMetadataExtractor_OutputParam
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: @wang-haizhou6-->
5+<!--Designer: @HmQQQ-->
6+<!--Tester: @xchaosioda-->
7+<!--Adviser: @w_Machine_cc-->
8+ 
9+```c
10+typedef struct OH_AVMetadataExtractor_OutputParam OH_AVMetadataExtractor_OutputParam
11+```
12+ 
13+## 概述
14+ 
15+定义由[AVMetadataExtractor](capi-avmetadataextractor.md)提取的帧的输出参数。
16+ 
17+**起始版本:** 23
18+ 
19+**相关模块:** [AVMetadataExtractor](capi-avmetadataextractor.md)
20+ 
21+**所在头文件:** [avmetadata_extractor_base.h](capi-avmetadata-extractor-base-h.md)
@@ -0,0 +1,46 @@
1+# avmetakeys.h
2+<!--Kit: Media Kit-->
3+<!--Subsystem: Multimedia-->
4+<!--Owner: -->
5+<!--Designer: -->
6+<!--Tester: -->
7+<!--Adviser: -->
8+ 
9+## 概述
10+ 
11+定义音视频元数据键。
12+ 
13+**引用文件:** <multimedia/player_framework/avmetakeys.h>
14+ 
15+**库:** libavmedia_base.so
16+ 
17+**系统能力:** SystemCapability.Multimedia.Media.Core
18+ 
19+**起始版本:** 23
20+ 
21+**相关模块:** [AVMediaBase](capi-avmediabase.md)
22+ 
23+## 汇总
24+ 
25+### 变量
26+ 
27+| 名称 | 描述 |
28+| -- | -- |
29+| extern const char * OH_AVMETA_KEY_TRACK_INDEX | 轨道索引,值类型为int32_t。<br>**起始版本:** 23 |
30+| extern const char * OH_AVMETA_KEY_TRACK_TYPE | 轨道类型,值类型为int32_t。<br>**起始版本:** 23 |
31+| extern const char * OH_AVMETA_KEY_MIME_TYPE | 编解码器MIME类型,值类型为字符串(string)。<br>**起始版本:** 23 |
32+| extern const char * OH_AVMETA_KEY_DURATION | 媒体时长(单位:微秒),值类型为int64_t。<br>**起始版本:** 23 |
33+| extern const char * OH_AVMETA_KEY_BITRATE | 比特率(单位:bps),值类型为int64_t。<br>**起始版本:** 23 |
34+| extern const char * OH_AVMETA_KEY_FRAME_RATE | 视频帧率(每100秒的帧数),值类型为double。<br>**起始版本:** 23 |
35+| extern const char * OH_AVMETA_KEY_WIDTH | 视频宽度,值类型为int32_t。<br>**起始版本:** 23 |
36+| extern const char * OH_AVMETA_KEY_HEIGHT | 视频高度,值类型为int32_t。<br>**起始版本:** 23 |
37+| extern const char * OH_AVMETA_KEY_CHANNEL_COUNT | 音频声道数,值类型为int32_t。<br>**起始版本:** 23 |
38+| extern const char * OH_AVMETA_KEY_SAMPLE_RATE | 音频采样率(Hz),值类型为int32_t。<br>**起始版本:** 23 |
39+| extern const char * OH_AVMETA_KEY_SAMPLE_DEPTH | 音频采样位深(bit depth),值类型为int32_t。<br>**起始版本:** 23 |
40+| extern const char * OH_AVMETA_KEY_LANGUAGE | 语言标识,值类型为字符串(string)。<br>**起始版本:** 23 |
41+| extern const char * OH_AVMETA_KEY_TRACK_NAME | 轨道名称,值类型为字符串(string)。<br>**起始版本:** 23 |
42+| extern const char * OH_AVMETA_KEY_HDR_TYPE | HDR 类型,值类型为int32_t。<br>**起始版本:** 23 |
43+| extern const char * OH_AVMETA_KEY_ORIGINAL_WIDTH | 原始视频宽度,值类型为int32_t。<br>**起始版本:** 23 |
44+| extern const char * OH_AVMETA_KEY_ORIGINAL_HEIGHT | 原始视频高度,值类型为int32_t。<br>**起始版本:** 23 |
45+| extern const char * OH_AVMETA_KEY_REF_TRACK_IDS | 被引用的轨道ID列表,仅用于元数据提取器。<br>**起始版本:** 23 |
46+| extern const char * OH_AVMETA_KEY_TRACK_REF_TYPE | 轨道引用类型,仅用于元数据提取器。<br>**起始版本:** 23 |
@@ -28,6 +28,8 @@
28| -- | -- | -- |28| -- | -- | -- |
29| [AVPlayerCallback](capi-avplayer-avplayercallback.md) | AVPlayerCallback | 包含了[OH_AVPlayerOnInfo](#oh_avplayeroninfo)和OH_AVPlayerOnInfo回调函数指针的集合。应用需注册此结构体到OH_AVPlayer实例中,并处理回调上报的信息,保证AVPlayer的正常运行。 |29| [AVPlayerCallback](capi-avplayer-avplayercallback.md) | AVPlayerCallback | 包含了[OH_AVPlayerOnInfo](#oh_avplayeroninfo)和OH_AVPlayerOnInfo回调函数指针的集合。应用需注册此结构体到OH_AVPlayer实例中,并处理回调上报的信息,保证AVPlayer的正常运行。 |
30| [OH_AVPlayer](capi-avplayer-oh-avplayer.md) | OH_AVPlayer | 初始化AVPlayer。 |30| [OH_AVPlayer](capi-avplayer-oh-avplayer.md) | OH_AVPlayer | 初始化AVPlayer。 |
31+| [OH_AVSeiMessageArray](./capi-avplayer-oh-avseimessagearray.md) | OH_AVSeiMessageArray | SEI消息数组。 |
32+| [OH_AVPlaybackStrategy](./capi-avplayer-oh-avplaybackstrategy.md) | OH_AVPlaybackStrategy | 播放策略。 |
31 33 
32### 枚举34### 枚举
33 35 
@@ -38,6 +40,7 @@
38| [AVPlaybackSpeed](#avplaybackspeed) | AVPlaybackSpeed | 播放速度。 |40| [AVPlaybackSpeed](#avplaybackspeed) | AVPlaybackSpeed | 播放速度。 |
39| [AVPlayerOnInfoType](#avplayeroninfotype) | AVPlayerOnInfoType | OnInfo类型。<br>可用于[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)和[OH_AVPlayerOnInfo](#oh_avplayeroninfo)(已废弃),用于表示收到的播放器信息类型。 |41| [AVPlayerOnInfoType](#avplayeroninfotype) | AVPlayerOnInfoType | OnInfo类型。<br>可用于[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)和[OH_AVPlayerOnInfo](#oh_avplayeroninfo)(已废弃),用于表示收到的播放器信息类型。 |
40| [AVPlayerBufferingType](#avplayerbufferingtype) | AVPlayerBufferingType | 播放缓冲消息类型定义。 |42| [AVPlayerBufferingType](#avplayerbufferingtype) | AVPlayerBufferingType | 播放缓冲消息类型定义。 |
43+| [AVPlayerTrackSwitchMode](#AVPlayerTrackSwitchMode) | AVPlayerTrackSwitchMode | 枚举轨道切换模式。 |
41 44 
42### 函数45### 函数
43 46 
@@ -47,6 +50,8 @@
47| [typedef void (\*OH_AVPlayerOnInfoCallback)(OH_AVPlayer \*player, AVPlayerOnInfoType type, OH_AVFormat* infoBody, void *userData)](#oh_avplayeroninfocallback) | OH_AVPlayerOnInfoCallback | 收到播放器消息时被调用。如果应用成功设置该回调,则不会回调[OH_AVPlayerOnInfo](#oh_avplayeroninfo)函数。 |50| [typedef void (\*OH_AVPlayerOnInfoCallback)(OH_AVPlayer \*player, AVPlayerOnInfoType type, OH_AVFormat* infoBody, void *userData)](#oh_avplayeroninfocallback) | OH_AVPlayerOnInfoCallback | 收到播放器消息时被调用。如果应用成功设置该回调,则不会回调[OH_AVPlayerOnInfo](#oh_avplayeroninfo)函数。 |
48| [typedef void (\*OH_AVPlayerOnError)(OH_AVPlayer *player, int32_t errorCode, const char *errorMsg)](#oh_avplayeronerror) | OH_AVPlayerOnError | 在API 9以上的版本发生错误时调用。 |51| [typedef void (\*OH_AVPlayerOnError)(OH_AVPlayer *player, int32_t errorCode, const char *errorMsg)](#oh_avplayeronerror) | OH_AVPlayerOnError | 在API 9以上的版本发生错误时调用。 |
49| [typedef void (\*OH_AVPlayerOnErrorCallback)(OH_AVPlayer *player, int32_t errorCode, const char *errorMsg, void *userData)](#oh_avplayeronerrorcallback) | OH_AVPlayerOnErrorCallback | 发生错误时被调用。如果应用成功设置该回调,则不会回调[OH_AVPlayerOnError](#oh_avplayeronerror)函数。 |52| [typedef void (\*OH_AVPlayerOnErrorCallback)(OH_AVPlayer *player, int32_t errorCode, const char *errorMsg, void *userData)](#oh_avplayeronerrorcallback) | OH_AVPlayerOnErrorCallback | 发生错误时被调用。如果应用成功设置该回调,则不会回调[OH_AVPlayerOnError](#oh_avplayeronerror)函数。 |
53+| [typedef void (*OH_AVPlayerOnAmplitudeUpdateCallback)(OH_AVPlayer *player, double *amplitudes, uint32_t size, void *userData)](#oh_avplayeronamplitudeupdatecallback) | OH_AVPlayerOnAmplitudeUpdateCallback | 当计算出最大音频电平值时调用。 |
54+| [typedef void (*OH_AVPlayerOnSeiMessageReceivedCallback)(OH_AVPlayer *player, OH_AVSeiMessageArray *message, int32_t playbackPosition, void *userData)](#oh_avplayeronseimessagereceivedcallback) | OH_AVPlayerOnSeiMessageReceivedCallback | 用于获取SEI消息的回调处理函数。在订阅SEI消息事件时使用,回调返回详细的SEI信息。 |
50 55 
51### 变量56### 变量
52 57 
@@ -72,6 +77,19 @@
72| const char * OH_PLAYER_VIDEO_HEIGHT | 获取视频高度信息的关键字,对应值类型是int32_t。<br>**起始版本:** 12 |77| const char * OH_PLAYER_VIDEO_HEIGHT | 获取视频高度信息的关键字,对应值类型是int32_t。<br>**起始版本:** 12 |
73| const char * OH_PLAYER_MESSAGE_TYPE | 获取播放器消息信息的关键字,对应值类型是int32_t。<br>1:视频帧开始渲染。<br>**起始版本:** 12 |78| const char * OH_PLAYER_MESSAGE_TYPE | 获取播放器消息信息的关键字,对应值类型是int32_t。<br>1:视频帧开始渲染。<br>**起始版本:** 12 |
74| const char * OH_PLAYER_IS_LIVE_STREAM | 获取媒体资源是否为直播类型信息的关键字,对应值类型是int32_t。<br>1:直播。<br>**起始版本:** 12 |79| const char * OH_PLAYER_IS_LIVE_STREAM | 获取媒体资源是否为直播类型信息的关键字,对应值类型是int32_t。<br>1:直播。<br>**起始版本:** 12 |
80+| const char * OH_PLAYER_SEI_PAYLOAD_TYPE | SEI 消息中表示负载类型的关键字。<br>**起始版本:** 23 |
81+| const char * OH_PLAYER_SEI_PAYLOAD_CONTENT | SEI 消息中表示负载内容的关键字。<br>**起始版本:** 23 |
82+| const char * OH_PLAYER_SUPER_RESOLUTION_ENABLE_STATE | 超分辨率功能启用状态关键字,值类型为int32_t。<br>值为 1 表示已启用,0 表示未启用;<br>用于超分辨率状态变化时的信息回调。<br>**起始版本:** 23 |
83+| const char * OH_PLAYER_TRACH_CHANGE_INFO_TRACK_INDEX | 轨道切换信息中表示轨道索引的关键字,值类型为int32_t。<br>**起始版本:** 23 |
84+| const char * OH_PLAYER_TRACH_CHANGE_INFO_TRACK_SELECTED | 轨道切换信息中表示轨道是否被选中的标志关键字,值类型为int32_t。<br>**起始版本:** 23 |
85+| const char * OH_PLAYER_SUBTITLE_UPDATE_INFO_DURATION | 字幕更新信息中表示持续时间的关键字,值类型为int32_t。<br>**起始版本:** 23 |
86+| const char * OH_PLAYER_SUBTITLE_UPDATE_INFO_START_TIME | 字幕更新信息中表示起始时间的关键字,值类型为int32_t。<br>**起始版本:** 23 |
87+| const char * OH_PLAYER_SUBTITLE_UPDATE_INFO_TEXT | 字幕更新信息中表示字幕文本内容的关键字,值类型为字符串(string)。<br>**起始版本:** 23 |
88+| const char * OH_PLAYER_SERVER_IP_ADDRESS | 播放信息中表示服务器IP地址的关键字。<br>**起始版本:** 23 |
89+| const char * OH_PLAYER_IS_DOWNLOADING | 播放信息中表示当前是否处于下载状态的关键字。<br>**起始版本:** 23 |
90+| const char * OH_PLAYER_BUFFER_DURATION | 播放信息中表示缓冲区时长的关键字。<br>**起始版本:** 23 |
91+| const char * OH_PLAYER_DOWNLOAD_RATE | 播放信息中表示当前下载速率的关键字,下载速率的单位为比特率(bps)。<br>**起始版本:** 23 |
92+| const char * OH_PLAYER_AVG_DOWNLOAD_RATE | 播放信息中表示平均下载速率的关键字,下载速率的单位为比特率(bps)。<br>**起始版本:** 23 |
75 93 
76## 枚举类型说明94## 枚举类型说明
77 95 
@@ -120,6 +138,7 @@ enum AVPlayerSeekMode
120| AV_SEEK_NEXT_SYNC = 0 | 同步到时间点之后的关键帧。 |138| AV_SEEK_NEXT_SYNC = 0 | 同步到时间点之后的关键帧。 |
121| AV_SEEK_PREVIOUS_SYNC | 同步到时间点之前的关键帧。 |139| AV_SEEK_PREVIOUS_SYNC | 同步到时间点之前的关键帧。 |
122| AV_SEEK_CLOSEST = 2 | 同步到距离指定时间点最近的帧。<br>**起始版本:** 12 |140| AV_SEEK_CLOSEST = 2 | 同步到距离指定时间点最近的帧。<br>**起始版本:** 12 |
141+| AV_SEEK_CONTINUOUS = 3 | 连续拖动模式下的跳转(seek)。该模式可提供更流畅的拖拽体验,但要求设备支持对当前流执行连续跳转。在调用连续跳转前,请先检查是否支持,参见[OH_AVPlayer_IsSeekContinuousSupported](capi-avplayer-h.md#oh_avplayer_isseekcontinuoussupported)。<br/>**起始版本:** 23 |
123 142 
124### AVPlaybackSpeed143### AVPlaybackSpeed
125 144 
@@ -183,6 +202,7 @@ OnInfo类型。<br>可用于OH_AVPlayerOnInfoCallback和OH_AVPlayerOnInfo(已废
183| AV_INFO_TYPE_SUBTITLE_UPDATE = 16 | 字幕信息更新时返回消息,此场景extra未定义。 |202| AV_INFO_TYPE_SUBTITLE_UPDATE = 16 | 字幕信息更新时返回消息,此场景extra未定义。 |
184| AV_INFO_TYPE_AUDIO_OUTPUT_DEVICE_CHANGE = 17 | 音频输出设备改变时返回消息。<br>key为OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。 |203| AV_INFO_TYPE_AUDIO_OUTPUT_DEVICE_CHANGE = 17 | 音频输出设备改变时返回消息。<br>key为OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。 |
185| AV_INFO_TYPE_PLAYBACK_RATE_DONE = 18 | 播放速率成功应用时返回消息。<br>key为OH_PLAYER_PLAYBACK_RATE:取值类型float。系统通过float传递value,应用通过float获取。<br>**起始版本:** 20 |204| AV_INFO_TYPE_PLAYBACK_RATE_DONE = 18 | 播放速率成功应用时返回消息。<br>key为OH_PLAYER_PLAYBACK_RATE:取值类型float。系统通过float传递value,应用通过float获取。<br>**起始版本:** 20 |
205+| AV_INFO_TYPE_SUPER_RESOLUTION_CHANGED = 19 | 超分辨率变化时返回消息。<br>**起始版本:** 23 |
186 206 
187### AVPlayerBufferingType207### AVPlayerBufferingType
188 208 
@@ -205,6 +225,25 @@ enum AVPlayerBufferingType
205| AVPLAYER_BUFFERING_PERCENT | 缓冲执行进度百分比,取值范围:整数,[0, 100]。 |225| AVPLAYER_BUFFERING_PERCENT | 缓冲执行进度百分比,取值范围:整数,[0, 100]。 |
206| AVPLAYER_BUFFERING_CACHED_DURATION | 缓冲数据可播放时长,单位:毫秒。 |226| AVPLAYER_BUFFERING_CACHED_DURATION | 缓冲数据可播放时长,单位:毫秒。 |
207 227 
228+### AVPlayerTrackSwitchMode
229+ 
230+```c
231+enum AVPlayerTrackSwitchMode
232+```
233+ 
234+**描述**
235+ 
236+枚举轨道切换模式。
237+ 
238+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
239+ 
240+**起始版本:** 23
241+ 
242+| 枚举项 | 描述 |
243+| -- | -- |
244+| AV_TRACK_SWITCH_MODE_SMOOTH = 0 | 平稳切换轨道。 |
245+| AV_TRACK_SWITCH_MODE_SEGMENT = 1 | 切换轨道段。 |
246+| AV_TRACK_SWITCH_MODE_CLOSEST = 2 | 切换到最近的轨道。 |
208 247 
209## 函数说明248## 函数说明
210 249 
@@ -333,4 +372,80 @@ typedef void (*OH_AVPlayerOnErrorCallback)(OH_AVPlayer *player, int32_t errorCod
333| const char *errorMsg | 错误消息。 |372| const char *errorMsg | 错误消息。 |
334| void *userData | 原样返回用户设置回调时传入的userData数据。 |373| void *userData | 原样返回用户设置回调时传入的userData数据。 |
335 374 
375+### OH_AVPlayerOnAmplitudeUpdateCallback
336 376 
377+```c
378+typedef void (*OH_AVPlayerOnAmplitudeUpdateCallback)(OH_AVPlayer *player, double *amplitudes, uint32_t size, void *userData)
379+```
380+ 
381+**描述**
382+ 
383+当计算出最大音频电平值时调用。
384+ 
385+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
386+ 
387+**起始版本:** 23
388+ 
389+**参数:**
390+ 
391+| 参数项 | 描述 |
392+| -- | -- |
393+| [OH_AVPlayer](capi-avplayer-oh-avplayer.md) *player | 指向OH_AVPlayer实例的指针。 |
394+| double *amplitudes | 指向最大音频电平值数组的指针。 |
395+| uint32_t size | 最大音频电平值数组的大小。 |
396+| void *userData | 指向用户特定数据的指针。 |
397+ 
398+**示例:**
399+ 
400+```c
401+OH_AVPlayer* player = nullptr;
402+player = OH_AVPlayer_Create();
403+auto amplitudeCallback = [](OH_AVPlayer* player, double *amp, uint32_t count, void* userData) {
404+ if (userData != nullptr) {
405+ int* callbackCount = static_cast<int*>(userData);
406+ (*callbackCount)++;
407+ }
408+};
409+int callbackCount = 0;
410+OH_AVErrCode ret = OH_AVPlayer_SetAmplitudeUpdateCallback(player, amplitudeCallback, &callbackCount);
wangqg
wangqgwangqg2025年12月23日

代码格式不对

likedislike
411+```
412+ 
413+### OH_AVPlayerOnSeiMessageReceivedCallback
414+ 
415+```c
416+typedef void (*OH_AVPlayerOnSeiMessageReceivedCallback)(OH_AVPlayer *player, OH_AVSeiMessageArray *message, int32_t playbackPosition, void *userData)
417+```
418+ 
419+**描述**
420+ 
421+用于获取SEI消息的回调处理函数。在订阅SEI消息事件时使用,回调返回详细的SEI信息。
422+ 
423+**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
424+ 
425+**起始版本:** 23
426+ 
427+**参数:**
428+ 
429+| 参数项 | 描述 |
430+| -- | -- |
431+| [OH_AVPlayer](capi-avplayer-oh-avplayer.md) *player | 指向OH_AVPlayer实例的指针。 |
432+| [OH_AVSeiMessageArray](./capi-avplayer-oh-avseimessagearray.md) *message | SEI消息数组。 |
433+| int32_t playbackPosition | 播放位置。 |
434+| void *userData | 指向用户特定数据的指针。 |
435+ 
436+**示例:**
437+ 
438+```c
439+OH_AVPlayer* player = nullptr;
440+player = OH_AVPlayer_Create();
441+void OnSeiMessageReceivedCallback(OH_AVPlayer *Player, OH_AVSeiMessageArray *message, int32_t playbackPosition, void *userData)
442+{
443+ MEDIA_LOGI("OnSeiMessageReceivedCallback received sei message");
444+}
wangqg
wangqgwangqg2025年12月23日

代码格式不对

likedislike
445+std::vector<int> payloadTypes = { 5, 6 };
446+int32_t userData = 0;
447+uint32_t typeNum = static_cast<uint32_t>(payloadTypes.size());
448+int ret = OH_AVPlayer_SetSeiReceivedCallback(player, payloadTypes.data(), typeNum, OnSeiMessageReceivedCallback, reinterpret_cast<void *>(&userData));
449+ret = OH_AVPlayer_SetSeiReceivedCallback(player, payloadTypes.data(), typeNum, nullptr, reinterpret_cast<void *>(&userData));
450+ret = OH_AVPlayer_SetSeiReceivedCallback(player, payloadTypes.data(), typeNum, OnSeiMessageReceivedCallback, nullptr);
451+```