已关闭
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
已关闭
共 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); | ||
| 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); | ||
代码缩进 ![]() ![]() | |||
| 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); | ||
代码缩进 ![]() ![]() | |||
| 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); | ||
代码缩进 ![]() ![]() | |||
| 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); | ||
代码缩进 ![]() ![]() | |||
| 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); | ||
示例是不是太长了?把回调的内容减少一点吧 ![]() ![]() | |||
| 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); | ||
示例是不是太长了?把回调的内容减少一点吧 ![]() ![]() | |||
| 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); | ||
同上 ![]() ![]() | |||
| 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); | ||
同上 ![]() ![]() | |||
| 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); | ||
同上 ![]() ![]() | |||
| 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); | ||
同上 ![]() ![]() | |||
| 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) | ||
Azh-cn/application-dev/reference/apis-media-kit/capi-avmediasource-oh-avmediasourceloadingrequest.md+21-0
| @@ -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 | ### AVPlaybackSpeed | 143 | ### 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 | ### AVPlayerBufferingType | 207 | ### 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); | ||
代码格式不对 ![]() ![]() | |||
| 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 | +} | ||
代码格式不对 ![]() ![]() | |||
| 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 | +``` | ||


代码缩进