# Native API 差异报告 OpenHarmony 4.0.8.5 版本相较于OpenHarmony 之å‰çš„版本的APIå˜æ›´å¦‚下: * ## æ ‡å‡†ç³»ç»ŸæŽ¥å£å˜æ›´ | 模å—å称 | 接å£å称 | å˜æ›´ç±»åž‹ | å˜æ›´è¯´æ˜Ž | | -------- | ------------------------------------------------------------ | -------- | -------------------- | | avmuxer | OH_AVMuxer \*OH_AVMuxer_Create(int32_t fd, OH_AVOutputFormat format); | 新增 | 创建OH_AVMuxer | | avmuxer | OH_AVErrCode OH_AVMuxer_SetRotation(OH_AVMuxer \*muxer, int32_t rotation); | 新增 | 设置视频旋转角度 | | avmuxer | OH_AVErrCode OH_AVMuxer_AddTrack(OH_AVMuxer \*muxer, int32_t \*trackIndex, OH_AVFormat \*trackFormat); | 新增 | æ·»åŠ åª’ä½“è½¨ | | avmuxer | OH_AVErrCode OH_AVMuxer_Start(OH_AVMuxer \*muxer); | 新增 | 开始å°è£… | | avmuxer | OH_AVErrCode OH_AVMuxer_WriteSample(OH_AVMuxer \*muxer, uint32_t trackIndex, OH_AVMemory \*sample, OH_AVCodecBufferAttr info); | 新增 | 将数æ®å†™å…¥å°è£…器 | | avmuxer | OH_AVErrCode OH_AVMuxer_Stop(OH_AVMuxer \*muxer); | 新增 | åœæ¢å°è£… | | avmuxer | OH_AVErrCode OH_AVMuxer_Destroy(OH_AVMuxer \*muxer); | 新增 | 销æ¯OH_AVMuxer | | avsource | OH_AVSource *OH_AVSource_CreateWithURI(char *uri); | 新增 | æ ¹æ® URI 创建 OH_AVSource | | avsource | OH_AVSource *OH_AVSource_CreateWithFD(int32_t fd, int64_t offset, int64_t size); | 新增 | æ ¹æ® FD 创建OH_AVSource | | avsource | OH_AVErrCode OH_AVSource_Destroy(OH_AVSource *source); | 新增 | é”€æ¯ OH_AVSource | | avsource | OH_AVFormat *OH_AVSource_GetSourceFormat(OH_AVSource *source); | 新增 | èŽ·å– source ä¿¡æ¯ | | avsource | OH_AVFormat *OH_AVSource_GetTrackFormat(OH_AVSource *source, uint32_t trackCount); | 新增 | èŽ·å– track ä¿¡æ¯ | | avdemuxer | OH_AVDemuxer *OH_AVDemuxer_CreateWithSource(OH_AVSource *source); | 新增 | æ ¹æ® source 创建 OH_AVDemuxer | | avdemuxer | OH_AVErrCode OH_AVDemuxer_Destroy(OH_AVDemuxer *demuxer); | 新增 | é”€æ¯ OH_AVDemuxer | | avdemuxer | OH_AVErrCode OH_AVDemuxer_SelectTrackByID(OH_AVDemuxer *demuxer, uint32_t trackIndex); | 新增 | 选择需è¦è§£å°è£…çš„è½¨é“ | | avdemuxer | OH_AVErrCode OH_AVDemuxer_UnselectTrackByID(OH_AVDemuxer *demuxer, uint32_t trackIndex); | 新增 | å–消选择需è¦è§£å°è£…çš„è½¨é“ | | avdemuxer | OH_AVErrCode OH_AVDemuxer_ReadSample(OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr *info); | 新增 | è¯»å– trackIndex 对应轨é“的帧 | | avdemuxer | OH_AVErrCode OH_AVDemuxer_SeekToTime(OH_AVDemuxer *demuxer, int64_t millisecond, OH_AVSeekMode mode); | 新增 | 跳转到指定时间 | |avcapability|OH_AVCapability *OH_AVCodec_GetCapability(const char *mime, bool isEncoder);|新增|获å–系统推è的能力å¥æŸ„| |avcapability|OH_AVCapability *OH_AVCodec_GetCapabilityByCategory(const char *mime, bool isEncoder, OH_AVCodecCategory category);|新增|获å–系统指定软硬件的能力å¥æŸ„| |avcapability|bool OH_AVCapability_IsHardware(OH_AVCapability *capability);|新增|确认是å¦æ˜¯ç¡¬ä»¶ç¼–解ç 器| |avcapability|const char *OH_AVCapability_GetName(OH_AVCapability *capability);|新增|获å–codecåå—| |avcapability|int32_t OH_AVCapability_GetMaxSupportedInstances(OH_AVCapability *capability);|新增|获å–最大支æŒçš„实例数| |avcapability|OH_AVErrCode OH_AVCapability_GetEncoderBitrateRange(OH_AVCapability *capability, OH_AVRange *bitrateRange);|新增|获å–ç¼–ç 支æŒçš„ç 率范围| |avcapability|bool OH_AVCapability_IsEncoderBitrateModeSupported(OH_AVCapability *capability, OH_BitrateMode bitrateMode);|新增|确认ç 控模å¼æ˜¯å¦æ”¯æŒ| |avcapability|OH_AVErrCode OH_AVCapability_GetEncoderQualityRange(OH_AVCapability *capability, OH_AVRange *qualityRange);|新增|获å–ç¼–ç è´¨é‡èŒƒå›´| |avcapability|OH_AVErrCode OH_AVCapability_GetEncoderComplexityRange(OH_AVCapability *capability, OH_AVRange *complexityRange);|新增|获å–ç¼–ç å¤æ‚度范围| |avcapability|OH_AVErrCode OH_AVCapability_GetAudioSupportedSampleRates(OH_AVCapability *capability, const int32_t **sampleRates, uint32_t *sampleRateNum);|新增|获å–支æŒçš„éŸ³é¢‘é‡‡æ ·çŽ‡| |avcapability|OH_AVErrCode OH_AVCapability_GetAudioChannelCountRange(OH_AVCapability *capability, OH_AVRange *channelCountRange);|新增|获å–音频通é“数范围| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoWidthAlignment(OH_AVCapability *capability, int32_t *widthAlignment);|新增|获å–视频宽对é½| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoHeightAlignment(OH_AVCapability *capability, int32_t *heightAlignment);|新增|获å–视频高对é½| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoWidthRangeForHeight(OH_AVCapability *capability, int32_t height, OH_AVRange *widthRange);|新增|获å–特定高情况下视频宽范围| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoHeightRangeForWidth(OH_AVCapability *capability, int32_t width, OH_AVRange *heightRange);|新增|获å–特定宽情况下视频高范围| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoWidthRange(OH_AVCapability *capability, OH_AVRange *widthRange);|新增|获å–视频宽范围| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoHeightRange(OH_AVCapability *capability, OH_AVRange *heightRange);|新增|获å–视频高范围| |avcapability|bool OH_AVCapability_IsVideoSizeSupported(OH_AVCapability *capability, int32_t width, int32_t height);|新增|确认当å‰è§†é¢‘尺寸是å¦æ”¯æŒ| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoFrameRateRange(OH_AVCapability *capability, OH_AVRange *frameRateRange);|新增|获å–视频帧率范围| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoFrameRateRangeForSize(OH_AVCapability *capability, int32_t width, int32_t height, OH_AVRange *frameRateRange);|新增|获å–特定尺寸下视频帧率范围| |avcapability|bool OH_AVCapability_AreVideoSizeAndFrameRateSupported(OH_AVCapability *capability, int32_t width, int32_t height, int32_t frameRate);|新增|确认当å‰è§†é¢‘尺寸和帧率是å¦æ”¯æŒ| |avcapability|OH_AVErrCode OH_AVCapability_GetVideoSupportedPixelFormats(OH_AVCapability *capability, const int32_t **pixFormats, uint32_t *pixFormatNum);|新增|获å–支æŒçš„视频åƒç´ æ ¼å¼| |avcapability|OH_AVErrCode OH_AVCapability_GetSupportedProfiles(OH_AVCapability *capability, const int32_t **profiles, uint32_t *profileNum);|新增|获å–支æŒçš„模æ¿| |avcapability|OH_AVErrCode OH_AVCapability_GetSupportedLevelsForProfile(OH_AVCapability *capability, int32_t profile, const int32_t **levels,uint32_t *levelNum);|新增|获å–特定模æ¿æƒ…况下的ç‰çº§èŒƒå›´| |avcapability|bool OH_AVCapability_AreProfileAndLevelSupported(OH_AVCapability *capability, int32_t profile, int32_t level);|新增|确认当å‰æ¨¡æ¿å’Œç‰çº§æ˜¯å¦æ”¯æŒ| |avformat|struct OH_AVFormat \*OH_AVFormat_CreateAudioFormat(const char \*mimeType, int32_t sampleRate, int32_t channelCount);|新增|创建音频轨的OH_AVFormat(用于avmuxer)| |avformat|struct OH_AVFormat \*OH_AVFormat_CreateVideoFormat(const char \*mimeType, int32_t width, int32_t height);|新增|创建视频轨的OH_AVFormat(用于avmuxer)| |avmemory|OH_AVMemory \*OH_AVMemory_Create(int32_t size);|新增|创建OH_AVMemory| |avmemory|OH_AVErrCode OH_AVMemory_Destroy(struct OH_AVMemory \*mem);|新增|销æ¯OH_AVMemory| | avcodec | OH_AVErrCode OH_AudioDecoder_IsValid(OH_AVCodec \*codec, bool \*isValid); | 新增 | 查询当å‰codec实例是å¦æœ‰æ•ˆ, å¯ç”¨äºŽæ•…éšœæ¢å¤ | | avcodec | OH_AVErrCode OH_AudioEncoder_IsValid(OH_AVCodec \*codec, bool \*isValid); | 新增 | 查询当å‰codec实例是å¦æœ‰æ•ˆ, å¯ç”¨äºŽæ•…éšœæ¢å¤ | | avcodec | OH_AVErrCode OH_VideoDecoder_IsValid(OH_AVCodec \*codec, bool \*isValid); | 新增 | 查询当å‰codec实例是å¦æœ‰æ•ˆ | | avcodec | OH_AVErrCode OH_VideoEncoder_IsValid(OH_AVCodec \*codec, bool \*isValid); | 新增 | 查询当å‰codec实例是å¦æœ‰æ•ˆ | | avcodec | OH_AVErrCode OH_VideoEncoder_PushInputData(OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr); | 新增 | 将填入数æ®çš„输入缓冲区æ交给视频编ç 器 | | avcodec | OH_AVFormat \*OH_VideoEncoder_GetInputDescription(OH_AVCodec \*codec); | 新增 | 获å–视频编ç 器接收的æè¿°ä¿¡æ¯ |