跳到主要内容

AVCodec支持的格式

音视频的编解码能力以及文件格式封装和解封装能力的支持情况,在不同平台存在能力和规格的差异。开发者可以通过获取支持的编解码能力来获取实际的支持情况和规格情况。

媒体编解码

视频解码

当前支持的解码能力如下:

视频解码类型视频解码格式的MIME类型
MSVIDEO122+OH_AVCODEC_MIMETYPE_VIDEO_MSVIDEO1
WMV322+OH_AVCODEC_MIMETYPE_VIDEO_WMV3
MJPEG22+OH_AVCODEC_MIMETYPE_VIDEO_MJPEG
MPEG2OH_AVCODEC_MIMETYPE_VIDEO_MPEG2
MPEG4OH_AVCODEC_MIMETYPE_VIDEO_MPEG4
H.263OH_AVCODEC_MIMETYPE_VIDEO_H263
AVC(H.264)OH_AVCODEC_MIMETYPE_VIDEO_AVC
HEVC(H.265)OH_AVCODEC_MIMETYPE_VIDEO_HEVC
AV123+OH_AVCODEC_MIMETYPE_VIDEO_AV1
VP923+OH_AVCODEC_MIMETYPE_VIDEO_VP9
VP823+OH_AVCODEC_MIMETYPE_VIDEO_VP8
RV3023+OH_AVCODEC_MIMETYPE_VIDEO_RV30
RV4023+OH_AVCODEC_MIMETYPE_VIDEO_RV40
WVC123+OH_AVCODEC_MIMETYPE_VIDEO_WVC1
DVVIDEO23+OH_AVCODEC_MIMETYPE_VIDEO_DVVIDEO
RAWVIDEO23+OH_AVCODEC_MIMETYPE_VIDEO_RAWVIDEO
MPEG123+OH_AVCODEC_MIMETYPE_VIDEO_MPEG1
VVC(H.266)OH_AVCODEC_MIMETYPE_VIDEO_VVC

通过MIME类型创建解码器时,如果系统平台支持硬件解码,系统平台会优先创建硬件解码器实例;如果系统平台不支持或者硬件解码器资源不足时,系统平台会创建软件解码器实例;如果系统平台无对应解码能力,会创建解码器实例失败。

系统平台提供的解码能力和设备强相关,开发者可以通过获取支持的编解码能力获取系统平台支持的软硬件解码能力和能力规格。

例如可以通过OH_AVCODEC_MIMETYPE_VIDEO_AVC、OH_AVCODEC_MIMETYPE_VIDEO_HEVC、OH_AVCODEC_MIMETYPE_VIDEO_VVC来查询系统平台支持的H.264、H.265、H.266的硬件解码能力。

具体开发指导请参考视频解码

视频编码

当前支持的编码能力如下:

视频编码类型视频编码格式的MIME类型
HEVC(H.265)OH_AVCODEC_MIMETYPE_VIDEO_HEVC
AVC(H.264)OH_AVCODEC_MIMETYPE_VIDEO_AVC

如果系统平台无对应编码能力,会创建编码器实例失败。

基于MimeType创建编码器时,可以配置为H.264(OH_AVCODEC_MIMETYPE_VIDEO_AVC)和H.265(OH_AVCODEC_MIMETYPE_VIDEO_HEVC)。

系统平台支持情况和每种编码的能力范围,可以通过获取支持的编解码能力获取。

具体开发指导请参考视频编码

音频解码

当前支持的解码能力:

音频解码类型音频解码格式的MIME类型
AACOH_AVCODEC_MIMETYPE_AUDIO_AAC
MPEG(MP3)OH_AVCODEC_MIMETYPE_AUDIO_MPEG
FlacOH_AVCODEC_MIMETYPE_AUDIO_FLAC
VorbisOH_AVCODEC_MIMETYPE_AUDIO_VORBIS
AMR(amrnb、amrwb)OH_AVCODEC_MIMETYPE_AUDIO_AMR_NBOH_AVCODEC_MIMETYPE_AUDIO_AMR_WB
G711muOH_AVCODEC_MIMETYPE_AUDIO_G711MU
APEOH_AVCODEC_MIMETYPE_AUDIO_APE
G711a20+OH_AVCODEC_MIMETYPE_AUDIO_G711A
ALAC22+OH_AVCODEC_MIMETYPE_AUDIO_ALAC
AC322+OH_AVCODEC_MIMETYPE_AUDIO_AC3
WMA22+(V1、V2、PRO)OH_AVCODEC_MIMETYPE_AUDIO_WMAV1OH_AVCODEC_MIMETYPE_AUDIO_WMAV2OH_AVCODEC_MIMETYPE_AUDIO_WMAPRO
GSM22+OH_AVCODEC_MIMETYPE_AUDIO_GSM
GSM_MS22+OH_AVCODEC_MIMETYPE_AUDIO_GSM_MS
Audio ViVid11+OH_AVCODEC_MIMETYPE_AUDIO_VIVID
opusOH_AVCODEC_MIMETYPE_AUDIO_OPUS

如果系统平台无对应解码能力,会创建解码器实例失败。

系统平台提供的解码能力和设备强相关,开发者可以通过获取支持的编解码能力获取系统平台支持的解码能力和能力规格。

从API version 23开始支持:TWINVQ、ILBC、TRUEHD、DVAUDIO、DTS、COOK。

具体开发指导请参考音频解码

音频编码

当前支持的编码能力:

音频编码类型音频编码格式的MIME类型
AACOH_AVCODEC_MIMETYPE_AUDIO_AAC
FlacOH_AVCODEC_MIMETYPE_AUDIO_FLAC
MPEG(MP3)OH_AVCODEC_MIMETYPE_AUDIO_MPEG
G711muOH_AVCODEC_MIMETYPE_AUDIO_G711MU
AMR(amrnb、amrwb)OH_AVCODEC_MIMETYPE_AUDIO_AMR_NBOH_AVCODEC_MIMETYPE_AUDIO_AMR_WB
opusOH_AVCODEC_MIMETYPE_AUDIO_OPUS

如果系统平台无对应编码能力,会创建编码器实例失败。

系统平台提供的编码能力和设备强相关,开发者可以通过获取支持的编解码能力获取系统平台支持的编码能力和能力规格。

具体开发指导请参考音频编码

媒体数据封装与解析

媒体数据解析

支持的解封装格式如下:

媒体格式封装格式轨道格式
音视频mp4视频轨:AVC(H.264)、HEVC(H.265)、VVC(H.266)、MPEG4 音频轨:AAC、MPEG(MP3)、Audio Vivid、ALAC22+ 字幕轨:WEBVTT 辅助轨:AUXL(音频RAW信息、视频深度信息等。) timed metadata轨:有时间属性的描述信息,如帧级的维测信息、传感器信息等。
音视频fmp4视频轨:AVC(H.264)、HEVC(H.265) 音频轨:AAC、MPEG(MP3)、Audio Vivid
音视频mkv视频轨:AVC(H.264)、HEVC(H.265)、MSVIDEO122+ 音频轨:AAC、MPEG(MP3)、OPUS、ADPCM_YAMAHA22+、ADPCM_G72222+、ALAC22+
音视频mpeg-ts视频轨:AVC(H.264)、HEVC(H.265)、MPEG2、MPEG4 音频轨:AAC、MPEG(MP3)、Audio Vivid
音视频flv视频轨:AVC(H.264)、HEVC(H.265) 音频轨:AAC
音视频mpeg-ps视频轨:AVC(H.264)、MPEG2 音频轨:MPEG(MP2、MP3)、DTS23+
音视频avi视频轨:H.263、AVC(H.264)、MPEG2、MPEG4、MJPEG22+、MSVIDEO122+ 音频轨:AAC、MPEG(MP2、MP3)、PCM、GSM_MS22+、ADPCM_YAMAHA22+、ADPCM_G72222+、DVAUDIO23+、DTS23+
音视频3gp22+视频轨:H.263、AVC(H.264)、MPEG4 音频轨:AAC、AMR(amrnb、amrwb)
音视频3g222+视频轨:H.263、AVC(H.264)、MPEG4 音频轨:AAC、AMR(amrnb、amrwb)
音视频m4v22+视频轨:AVC(H.264)、HEVC(H.265)、MPEG4 音频轨:AAC、ALAC、AC3
音视频wmv22+视频轨:AVC(H.264)、WMV3 音频轨:WMAV1、WMAV2、WMAPRO
音视频rm23+、rmvb23+视频轨:RV30、RV40 音频轨:AAC、AC3、COOK
音频m4a音频轨:AAC、Audio Vivid、ALAC22+
音频aac音频轨:AAC
音频mp3音频轨:MPEG(MP3)
音频ogg音频轨:Vorbis
音频flac音频轨:Flac
音频wav音频轨:PCM、G711mu、G711a、GSM_MS22+、ADPCM_YAMAHA22+、ADPCM_G72222+、ADPCM_G72622+、DVAUDIO23+、DTS23+
音频amr音频轨:AMR(amrnb、amrwb)
音频ape音频轨:APE
音频wma22+音频轨:AC3、WMAV1、WMAV2、Vorbis、Flac、AMR(amrnb、amrwb)、AAC、MPEG(MP2、MP3)、GSM_MS、G711mu、G711a、PCM、ADPCM_G722、ADPCM_G726、ADPCM_IMA_WAV、ADPCM_MS、ADPCM_YAMAHA、DVAUDIO23+、DTS23+
音频sunAU24+音频轨:PCM、ADPCM_G722、ADPCM_G726LE、G711mu、G711a
音频dts23+音频轨:DTS
外挂字幕srt字幕轨:SRT
外挂字幕webvtt字幕轨:WEBVTT

DRM解密能力支持的解封装格式:mp4(H.264,H.265,AAC)、mpeg-ts(H.264,H.265,AAC)。

具体开发指导请参考媒体数据解析

媒体数据封装

当前支持的封装能力如下:

封装格式视频编解码类型音频编解码类型封面类型
mp4AVC(H.264)、HEVC(H.265)AAC、MPEG(MP3)jpeg、png、bmp
m4a-AACjpeg、png、bmp
mp3-MPEG(MP3)-
amr-AMR(amrnb、amrwb)-
wav-G711mu(pcm-mulaw) 、raw(pcm)-
aac-AAC-
flac-Flacjpeg、png、bmp
ogg23+-Vorbis、OPUS-

  • 封装格式为mp4,音频编解码类型为MPEG(MP3)时采样率需大于等于16000Hz。
  • 封装格式为mp4/m4a,音频编解码类型为AAC时声道数范围为1~7。

文件级数据已定义的key如下所示:

key描述
OH_MD_KEY_CREATION_TIME媒体文件创建时间的元数据,值类型为string(API14开始支持)。
OH_MD_KEY_COMMENT媒体文件注释的键,值类型为string(API20开始支持)。
OH_MD_KEY_ENABLE_MOOV_FRONT媒体文件moov元数据是否前置标志,值类型为int32_t(API20开始支持)。

用户自定义的key必须以"com.openharmony."为开头。值类型可以为int32_t、float、string,从API20开始增加支持uint8_t*。

配置选项key值说明:

mp4封装格式:

key描述aacmp3H.264H.265jpgpngbmp
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须必须-----
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须必须-----
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选可选-----
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选可选-----
OH_MD_KEY_PROFILE编码档次可选------
OH_MD_KEY_BITRATE码率可选可选可选可选---
OH_MD_KEY_CODEC_CONFIG编解码器特定数据可选-可选可选---
OH_MD_KEY_WIDTH宽度--必须必须必须必须必须
OH_MD_KEY_HEIGHT高度--必须必须必须必须必须
OH_MD_KEY_FRAME_RATE视频流帧率--可选可选---
OH_MD_KEY_COLOR_PRIMARIES视频色域--可选可选---
OH_MD_KEY_TRANSFER_CHARACTERISTICS视频传递函数--可选可选---
OH_MD_KEY_MATRIX_COEFFICIENTS视频矩阵系数--可选可选---
OH_MD_KEY_RANGE_FLAG值域标志--可选可选---
OH_MD_KEY_VIDEO_IS_HDR_VIVID视频轨是否为HDR VIVID---可选---

mp4封装辅助轨格式:

key描述aacmp3H.264H.265
OH_MD_KEY_TRACK_TYPE轨道媒体类型必须必须必须必须
OH_MD_KEY_TRACK_REFERENCE_TYPE轨道引用类型必须必须必须必须
OH_MD_KEY_TRACK_DESCRIPTION轨道标识必须必须必须必须
OH_MD_KEY_REFERENCE_TRACK_IDS引用轨道编号必须必须必须必须
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须必须--
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须必须--
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选可选--
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选可选--
OH_MD_KEY_PROFILE编码档次可选---
OH_MD_KEY_BITRATE码率可选可选可选可选
OH_MD_KEY_CODEC_CONFIG编解码器特定数据可选-可选可选
OH_MD_KEY_WIDTH宽度--必须必须
OH_MD_KEY_HEIGHT高度--必须必须
OH_MD_KEY_FRAME_RATE视频流帧率--可选可选
OH_MD_KEY_COLOR_PRIMARIES视频色域--可选可选
OH_MD_KEY_TRANSFER_CHARACTERISTICS视频传递函数--可选可选
OH_MD_KEY_MATRIX_COEFFICIENTS视频矩阵系数--可选可选
OH_MD_KEY_RANGE_FLAG值域标志--可选可选
OH_MD_KEY_VIDEO_IS_HDR_VIVID视频轨是否为HDR VIVID---可选

m4a封装格式:

key描述aacjpgpngbmp
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须---
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须---
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选---
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选---
OH_MD_KEY_PROFILE编码档次可选---
OH_MD_KEY_BITRATE码率可选---
OH_MD_KEY_CODEC_CONFIG编解码器特定数据可选---
OH_MD_KEY_WIDTH宽度-必须必须必须
OH_MD_KEY_HEIGHT高度-必须必须必须

amr封装格式:

key描述amr_nbamr_wb
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须必须
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须必须
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选可选
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选可选
OH_MD_KEY_BITRATE码率可选可选

mp3封装格式:

key描述mp3jpg
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须-
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须-
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选-
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选-
OH_MD_KEY_BITRATE码率可选-
OH_MD_KEY_WIDTH宽度-必须
OH_MD_KEY_HEIGHT高度-必须

wav封装格式:

key描述g711muraw
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须必须
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须必须
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选必须
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选可选
OH_MD_KEY_BITRATE码率必须可选

aac封装格式:

key描述aac
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式可选
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选
OH_MD_KEY_BITRATE码率可选
OH_MD_KEY_PROFILE编码档次必须
OH_MD_KEY_AAC_IS_ADTS是否为ADTS格式必须

flac封装格式:

key描述flac
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须
OH_MD_KEY_AUDIO_SAMPLE_FORMAT输出音频流格式必须
OH_MD_KEY_CHANNEL_LAYOUT通道布局可选
OH_MD_KEY_BITRATE码率可选
OH_MD_KEY_CODEC_CONFIG编解码器特定数据可选

ogg封装格式(从API version 23开始支持):

key描述VorbisOPUS
OH_MD_KEY_AUD_SAMPLE_RATE采样率必须必须
OH_MD_KEY_AUD_CHANNEL_COUNT声道数必须必须
OH_MD_KEY_CODEC_CONFIG编解码器特定数据必须必须

具体开发指导请参考媒体数据封装