1# AVCodec支持的格式 2 3<!--Kit: AVCodec Kit--> 4<!--Subsystem: Multimedia--> 5<!--Owner: @zhanghongran; @mr-chencxy--> 6<!--Designer: @dpy2650---> 7<!--Tester: @cyakee--> 8<!--Adviser: @zengyawen--> 9 10## 媒体编解码 11 12### 视频解码 13 14当前支持的解码能力如下: 15 16| 视频硬解类型 | 视频软解类型 | 17| --------------------- | ---------------- | 18| AVC(H.264)、HEVC(H.265)<!--RP14--><!--RP14End--> | MPEG2、MPEG4、H.263、AVC(H.264)<!--RP12--><!--RP12End--> | 19 20通过MimeType创建解码器时,系统会优先创建硬件解码器实例。如果系统平台不支持或者硬件解码器资源不足时,系统会创建软件解码器实例。 21当前系统支持的软件解码器格式包括: 22- MPEG2(OH_AVCODEC_MIMETYPE_VIDEO_MPEG2) 23- MPEG4(OH_AVCODEC_MIMETYPE_VIDEO_MPEG4_PART2) 24- H.263(OH_AVCODEC_MIMETYPE_VIDEO_H263) 25- H.264(OH_AVCODEC_MIMETYPE_VIDEO_AVC) 26<!--RP13--><!--RP13End--> 27 28系统提供的硬件解码能力和平台硬件能力强相关,开发者可以通过[获取支持的编解码能力](obtain-supported-codecs.md)获取系统硬件解码的能力和能力规格。 29例如可以通过<!--RP15-->OH_AVCODEC_MIMETYPE_VIDEO_AVC、OH_AVCODEC_MIMETYPE_VIDEO_HEVC<!--RP15End-->来查询系统支持的<!--RP16-->H.264、H.265的硬件解码能力。<!--RP16End--> 30 31具体开发指导请参考[视频解码](video-decoding.md)。 32 33### 视频编码 34 35当前支持的编码能力如下: 36 37| 视频编码类型 | 38| ---------------------------- | 39| HEVC(H.265)、 AVC(H.264) | 40 41目前仅支持硬件编码,基于MimeType创建编码器时,支持配置为H.264(OH_AVCODEC_MIMETYPE_VIDEO_AVC)和H.265(OH_AVCODEC_MIMETYPE_VIDEO_HEVC)。 42 43每一种编码的能力范围,可以通过[获取支持的编解码能力](obtain-supported-codecs.md)获取。 44 45具体开发指导请参考[视频编码](video-encoding.md)。 46 47 48### 音频解码 49 50当前支持的解码能力: 51 52AAC、MPEG(MP3)、Flac、Vorbis、AMR(amrnb、amrwb)、G711mu、APE、G711a<!--RP1--><!--RP1End-->。 53 54具体开发指导请参考[音频解码](audio-decoding.md)。 55 56 57### 音频编码 58 59当前支持的编码能力: 60 61AAC、Flac、MP3、G711mu<!--RP3--><!--RP3End-->。 62 63具体开发指导请参考[音频编码](audio-encoding.md)。 64 65 66## 媒体数据封装与解析 67 68### 媒体数据解析 69 70支持的解封装格式如下: 71 72| 媒体格式 | 封装格式 | 轨道格式 | 73| -------- | :----------------------------| :----------------------------| 74| 音视频 | mp4 |<!--RP4-->视频轨:AVC(H.264)、MPEG4<br>音频轨:AAC、MPEG(MP3)<br>字幕轨:WEBVTT<br>辅助轨:AUXL(AAC、MP3)<br>timed metadata轨<!--RP4End-->| 75| 音视频 | fmp4 |<!--RP5-->视频轨:AVC(H.264)<br>音频轨:AAC、MPEG(MP3)<!--RP5End-->| 76| 音视频 | mkv |<!--RP6-->视频轨:AVC(H.264)<br>音频轨:AAC、MPEG(MP3)、OPUS<!--RP6End-->| 77| 音视频 | mpeg-ts |<!--RP7-->视频轨:AVC(H.264)、MPEG2、MPEG4<br>音频轨:AAC、MPEG(MP3)<!--RP7End-->| 78| 音视频 | flv |<!--RP8-->视频轨:AVC(H.264)<br>音频轨:AAC<!--RP8End-->| 79| 音视频 | mpeg-ps |视频轨:AVC(H.264)、MPEG2<br>音频轨:MPEG(MP2、MP3)| 80| 音视频 | avi |视频轨:H.263、AVC(H.264)、MPEG2、MPEG4<br>音频轨:AAC、MPEG(MP2、MP3)、PCM| 81| 音频 | m4a |<!--RP9-->音频轨:AAC<!--RP9End-->| 82| 音频 | aac |音频轨:AAC| 83| 音频 | mp3 |音频轨:MPEG(MP3)| 84| 音频 | ogg |音频轨:Vorbis| 85| 音频 | flac |音频轨:Flac| 86| 音频 | wav |音频轨:PCM、G711mu、G711a| 87| 音频 | amr |音频轨:AMR(amrnb、amrwb)| 88| 音频 | ape |音频轨:APE| 89| 外挂字幕 | srt |字幕轨:SRT| 90| 外挂字幕 | webvtt |字幕轨:WEBVTT| 91 92DRM解密能力支持的解封装格式:<!--RP10-->mp4(H.264,AAC)、mpeg-ts(H.264,AAC)<!--RP10End-->。 93 94具体开发指导请参考[媒体数据解析](audio-video-demuxer.md)。 95 96 97### 媒体数据封装 98 99当前支持的封装能力如下: 100 101| 封装格式 | 视频编解码类型 | 音频编解码类型 | 封面类型 | 102| -------- | --------------------- | ---------------- | -------------- | 103| mp4 | AVC(H.264)<!--RP11--><!--RP11End--> | AAC、MPEG(MP3) | jpeg、png、bmp | 104| m4a | - | AAC | jpeg、png、bmp | 105| mp3 | - | MPEG(MP3) | - | 106| amr | - | AMR(amrnb、amrwb) | - | 107| wav | - | G711mu(pcm-mulaw) 、raw(pcm)| - | 108| aac | - | AAC | - | 109| flac | - | Flac | jpeg、png、bmp | 110 111> **说明:** 112> 113> - 封装格式为mp4,音频编解码类型为MPEG(MP3)时采样率需大于等于16000Hz。 114> - 封装格式为mp4/m4a,音频编解码类型为AAC时声道数范围为1~7。 115 116配置选项key值说明: 117 118mp4封装格式: 119 | key | 描述 | aac | mp3 | H.264 | H.265 | jpg | png | bmp | 120 | ---------------------------------- | :------------------: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | 121 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 必须 | - | - | - | - | - | 122 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 必须 | - | - | - | - | - | 123 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | 可选 | - | - | - | - | - | 124 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 可选 | - | - | - | - | - | 125 | OH_MD_KEY_PROFILE | 编码档次 | 可选 | - | - | - | - | - | - | 126 | OH_MD_KEY_BITRATE | 码率 | 可选 | 可选 | 可选 | 可选 | - | - | - | 127 | OH_MD_KEY_CODEC_CONFIG | 编解码器特定数据 | 可选 | - | 可选 | 可选 | - | - | - | 128 | OH_MD_KEY_WIDTH | 宽度 | - | - | 必须 | 必须 | 必须 | 必须 | 必须 | 129 | OH_MD_KEY_HEIGHT | 高度 | - | - | 必须 | 必须 | 必须 | 必须 | 必须 | 130 | OH_MD_KEY_FRAME_RATE | 视频流帧率 | - | - | 可选 | 可选 | - | - | - | 131 | OH_MD_KEY_COLOR_PRIMARIES | 视频色域 | - | - | 可选 | 可选 | - | - | - | 132 | OH_MD_KEY_TRANSFER_CHARACTERISTICS | 视频传递函数 | - | - | 可选 | 可选 | - | - | - | 133 | OH_MD_KEY_MATRIX_COEFFICIENTS | 视频矩阵系数 | - | - | 可选 | 可选 | - | - | - | 134 | OH_MD_KEY_RANGE_FLAG | 值域标志 | - | - | 可选 | 可选 | - | - | - | 135 | OH_MD_KEY_VIDEO_IS_HDR_VIVID | 视频轨是否为HDR VIVID | - | - | - | 可选 | - | - | - | 136 137mp4封装辅助轨格式: 138 | key | 描述 | aac | mp3 | H.264 | H.265 | 139 | ---------------------------------- | :------------------: | :----: | :----: | :----: | :----: | 140 | OH_MD_KEY_TRACK_TYPE | 轨道媒体类型 | 必须 | 必须 | 必须 | 必须 | 141 | OH_MD_KEY_TRACK_REFERENCE_TYPE | 轨道引用类型 | 必须 | 必须 | 必须 | 必须 | 142 | OH_MD_KEY_TRACK_DESCRIPTION | 轨道标识 | 必须 | 必须 | 必须 | 必须 | 143 | OH_MD_KEY_REFERENCE_TRACK_IDS | 引用轨道编号 | 必须 | 必须 | 必须 | 必须 | 144 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 必须 | - | - | 145 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 必须 | - | - | 146 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | 可选 | - | - | 147 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 可选 | - | - | 148 | OH_MD_KEY_PROFILE | 编码档次 | 可选 | - | - | - | 149 | OH_MD_KEY_BITRATE | 码率 | 可选 | 可选 | 可选 | 可选 | 150 | OH_MD_KEY_CODEC_CONFIG | 编解码器特定数据 | 可选 | - | 可选 | 可选 | 151 | OH_MD_KEY_WIDTH | 宽度 | - | - | 必须 | 必须 | 152 | OH_MD_KEY_HEIGHT | 高度 | - | - | 必须 | 必须 | 153 | OH_MD_KEY_FRAME_RATE | 视频流帧率 | - | - | 可选 | 可选 | 154 | OH_MD_KEY_COLOR_PRIMARIES | 视频色域 | - | - | 可选 | 可选 | 155 | OH_MD_KEY_TRANSFER_CHARACTERISTICS | 视频传递函数 | - | - | 可选 | 可选 | 156 | OH_MD_KEY_MATRIX_COEFFICIENTS | 视频矩阵系数 | - | - | 可选 | 可选 | 157 | OH_MD_KEY_RANGE_FLAG | 值域标志 | - | - | 可选 | 可选 | 158 | OH_MD_KEY_VIDEO_IS_HDR_VIVID | 视频轨是否为HDR VIVID | - | - | - | 可选 | 159 160m4a封装格式: 161 | key | 描述 | aac | jpg | png | bmp | 162 | ---------------------------------- | :------------------: | :----: | :----: | :----: | :----: | 163 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | - | - | - | 164 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | - | - | - | 165 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | - | - | - | 166 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | - | - | - | 167 | OH_MD_KEY_PROFILE | 编码档次 | 可选 | - | - | - | 168 | OH_MD_KEY_BITRATE | 码率 | 可选 | - | - | - | 169 | OH_MD_KEY_CODEC_CONFIG | 编解码器特定数据 | 可选 | - | - | - | 170 | OH_MD_KEY_WIDTH | 宽度 | - | 必须 | 必须 | 必须 | 171 | OH_MD_KEY_HEIGHT | 高度 | - | 必须 | 必须 | 必须 | 172 173amr封装格式: 174 | key | 描述 | amr_nb | amr_wb | 175 | ---------------------------------- | :------------------: | :----: | :----: | 176 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 必须 | 177 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 必须 | 178 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | 可选 | 179 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 可选 | 180 | OH_MD_KEY_BITRATE | 码率 | 可选 | 可选 | 181 182mp3封装格式: 183 | key | 描述 | mp3 | jpg | 184 | ---------------------------------- | :------------------: | :----: | :----: | 185 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | - | 186 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | - | 187 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | - | 188 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | - | 189 | OH_MD_KEY_BITRATE | 码率 | 可选 | - | 190 | OH_MD_KEY_WIDTH | 宽度 | - | 必须 | 191 | OH_MD_KEY_HEIGHT | 高度 | - | 必须 | 192 193wav封装格式: 194 | key | 描述 | g711mu | raw | 195 | ---------------------------------- | :------------------: | :----: | :----: | 196 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 必须 | 197 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 必须 | 198 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | 必须 | 199 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 可选 | 200 | OH_MD_KEY_BITRATE | 码率 | 必须 | 可选 | 201 202aac封装格式: 203 | key | 描述 | aac | 204 | ---------------------------------- | :------------------: | :----: | 205 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 206 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 207 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 可选 | 208 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 209 | OH_MD_KEY_BITRATE | 码率 | 可选 | 210 | OH_MD_KEY_PROFILE | 编码档次 | 必须 | 211 | OH_MD_KEY_AAC_IS_ADTS | 是否为ADTS格式 | 必须 | 212 213flac封装格式: 214 | key | 描述 | flac | 215 | ---------------------------------- | :------------------: | :----: | 216 | OH_MD_KEY_AUD_SAMPLE_RATE | 采样率 | 必须 | 217 | OH_MD_KEY_AUD_CHANNEL_COUNT | 声道数 | 必须 | 218 | OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 输出音频流格式 | 必须 | 219 | OH_MD_KEY_CHANNEL_LAYOUT | 通道布局 | 可选 | 220 | OH_MD_KEY_BITRATE | 码率 | 可选 | 221 | OH_MD_KEY_CODEC_CONFIG | 编解码器特定数据 | 可选 | 222 223具体开发指导请参考[媒体数据封装](audio-video-muxer.md)。 224