本文同步发表于微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

   Media Kit(媒体服务)是鸿蒙系统中用于开发音视频播放或录制功能的核心模块。无论是开发音乐播放器、视频播放器,还是实现音视频录制、屏幕录制,都离不开Media Kit。

一、Media Kit

Media Kit(媒体服务)用于开发音视频播放或录制的各类功能。例如:

  • 使用SoundPool实现简单的提示音,当设备接收到新消息时发出短促的"滴滴"声

  • 使用AVPlayer实现音乐播放器,循环播放一首音乐

Media Kit 七大模块

模块 功能
AVPlayer 播放音视频
SoundPool 播放短音频
AVRecorder 录制音视频
AVScreenCapture 录制屏幕
AVMetadataExtractor 获取音视频元数据
AVImageGenerator 获取视频缩略图
AVTranscoder 视频转码

亮点/特征

特征 说明
轻量媒体引擎 使用较少的系统资源(线程、内存),支持pipeline灵活拼装
支持HDR视频 支持HDR Vivid的采集与播放,带来更炫彩的体验
支持音频池 一次加载,多次低时延播放(相机快门、系统通知等)

说明

本文仅针对音视频播放或录制本身,由media模块提供相关能力,不涉及UI界面、图形处理、媒体存储或其他相关领域功能。

流媒体播放相关概念

概念 说明
网络协议 HLS、HTTP-FLV、HTTP/HTTPS
容器格式 mp4、mkv、mpeg-ts
编码格式 h264、h265
播放过程 网络协议 → 容器格式 → 音视频编解码 → 图形/音频渲染

二、AVPlayer(音视频播放)

AVPlayer主要工作是将Audio/Video媒体资源(如mp4、mp3、mkv、mpeg-ts等)转码为可供渲染的图像和可听见的音频模拟信号,并通过输出设备进行播放。应用只需要提供流媒体来源,不负责数据解析和解码就可达成播放效果。

音频播放交互流程

音乐应用 → AVPlayer接口 → Player Framework → Audio Framework → 音频HDI
                                    ↓
                            音频PCM数据流

说明

  • 应用将媒体资源传递给AVPlayer接口

  • Player Framework将音频PCM数据流输出给Audio Framework

  • Audio Framework输出给音频HDI,实现音频播放

视频播放交互流程

应用 → XComponent → AVPlayer接口 → Player Framework
                                      ↓
                    音频PCM → Audio Framework → 音频HDI
                    视频ES → 解码HDI → Graphic Framework → 显示HDI

参与模块:应用、XComponent、Player Framework、Graphic Framework、Audio Framework、显示HDI、音频HDI

支持的协议

协议类型 协议描述
本地点播 支持file descriptor,禁止file path
网络点播 支持http/https/hls/dash
网络直播 支持hls/http-flv

支持的音频播放格式

音频容器 规格描述
m4a AAC
aac AAC
mp3 MP3
ogg VORBIS
wav PCM
flac FLAC
amr AMR
ape APE

支持的视频播放格式

视频容器 规格描述 分辨率
mp4 视频:H265/H264,音频:AAC/MP3 4K/1080P/720P/480P/270P
mkv 视频:H265/H264,音频:AAC/MP3 4K/1080P/720P/480P/270P
ts 视频:H265/H264,音频:AAC/MP3 4K/1080P/720P/480P/270P

支持的字幕格式

字幕容器 支持的协议 加载方式
srt 本地点播(fd)/网络点播 外挂字幕
vtt 本地点播(fd)/网络点播 外挂字幕
webvtt 网络点播(dash协议) 内置字幕

注意:当dash协议存在内置字幕时,不支持添加外挂字幕。

三、SoundPool(短音频播放)

SoundPool提供短音频的播放能力,应用只需要提供音频资源来源,不负责数据解析和解码就可达成播放效果。适用于相机快门音效、系统通知音效等场景。

交互流程

音乐应用 → SoundPool接口 → Player Framework → Audio Framework → 音频HDI
                                    ↓
                            音频PCM数据流

支持的协议

协议类型 协议描述
本地点播 支持file descriptor,禁止file path

支持的音频播放格式

音频容器 规格描述
m4a AAC
aac AAC
mp3 MP3
ogg VORBIS
wav PCM

四、AVRecorder(音视频录制)

AVRecorder主要工作是捕获音频信号、接收视频信号,完成音视频编码并保存到文件中。支持开始录制、暂停录制、恢复录制、停止录制、释放资源等功能。

交互流程

音频录制

应用 → AVRecorder接口 → 录制服务 → Audio Framework → 音频HDI → 编码封装 → 文件

**视频录制**:
应用 → AVRecorder接口 → 录制服务 ← 相机服务(Camera Framework) → 视频HDI
                              ↓
                        视频编码HDI → 封装 → 文件

支持的音频源

音频源类型 说明
mic 系统麦克风作为音频源输入

支持的视频源

视频源类型 说明
surface_yuv 输入surface中携带的是raw data
surface_es 输入surface中携带的是ES data

支持的音视频编码格式

编码格式 说明
audio/mp4a-latm 音频/mp4a-latm类型
video/hevc 视频/hevc类型(H.265)
video/avc 视频/avc类型(H.264)
audio/mpeg 音频/mpeg类型
audio/g711mu 音频/g711-mulaw类型
audio/3gpp 音频/amr-nb类型
audio/amr-wb 音频/amr-wb类型

支持的输出文件格式

输出文件格式 说明
mp4 视频容器格式
m4a 音频容器格式
mp3 音频容器格式
wav 音频容器格式
amr 音频容器格式

五、AVScreenCapture(屏幕录制)

AVScreenCapture主要工作是捕获音频信号、视频信号,并通过音视频编码将屏幕信息保存到文件中,支持录屏存文件和录屏取码流两套接口。

交互流程

应用 → AVScreenCapture接口 → 录屏框架
                              ↓
             音频 → Audio Framework → 音频捕获
             视频 → 图形图像服务 → 视频捕获
                              ↓
                        编码封装 → 文件

支持的音频源

音频源类型 说明
MIC 系统麦克风作为音频源输入
ALL_PLAYBACK 系统内录作为音频源输入

支持的视频源

视频源类型 说明
SURFACE_RGBA 输出Buffer是rgba data

支持的音频编码格式

音频编码格式 说明
AAC_LC AAC_LC类型

支持的视频编码格式

视频编码格式 说明
H264 H264类型

支持的输出文件格式

输出文件格式 说明
mp4 视频容器格式
m4a 纯音频容器格式

六、AVMetadataExtractor(元数据提取)

AVMetadataExtractor主要用于获取音视频元数据,包括:

  • 音频:标题、艺术家、专辑名称、时长等详细信息

  • 视频:元数据获取流程与音频类似,但无法获取专辑封面

使用流程

创建AVMetadataExtractor
    ↓
设置资源
    ↓
获取元数据
    ↓
获取专辑封面(可选,仅音频)
    ↓
销毁资源

支持的音视频源

参考媒体数据解析

七、AVImageGenerator(视频缩略图)

AVImageGenerator主要用于获取视频缩略图,可以从原始媒体资源中获取视频指定时间的视频帧。

支持的视频源

参考视频解码

八、AVTranscoder(视频转码)

AVTranscoder主要用于将已压缩编码的视频文件按照指定参数转换为另一种格式的视频。

转码能力

能力 说明
编码参数转换 修改源视频文件的编码参数(格式、码率)和封装格式
HDR转SDR 支持将HDR VIVID视频转换为SDR视频
分辨率调整 支持转码时降低视频分辨率

分辨率限制

限制 说明
原视频分辨率 不高于4K
目标视频分辨率 不低于240p
宽高关系 目标视频宽、高不能大于源视频宽、高,且不能设置为奇数

支持的源视频格式

依赖于系统解码器和解封装支持的格式,参考AVCodec支持的格式

支持的目标视频格式

封装格式 视频编码类型 音频编码类型
mp4 AVC(H.264)、HEVC(H.265) AAC

轨道数限制

限制 说明
字幕轨 不支持,转码后丢弃
视频轨 仅输出一条,默认选择第一条
音频轨 仅输出一条,默认选择第一条

九、汇总对比

模块 功能 输入 输出
AVPlayer 音视频播放 本地/网络媒体资源 音频/视频输出
SoundPool 短音频播放 本地音频文件 音频输出
AVRecorder 音视频录制 麦克风/相机 mp4/m4a/mp3/wav/amr
AVScreenCapture 屏幕录制 屏幕+麦克风/内录 mp4/m4a
AVMetadataExtractor 元数据提取 音视频文件 标题/艺术家/时长等
AVImageGenerator 视频缩略图 视频文件 视频帧图片
AVTranscoder 视频转码 视频文件 转码后视频文件
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐