鸿蒙OS 媒体应用
本文概述了 HarmonyOS 媒体应用开发的关键方面,包括音频播放和录制、音频通话和图片处理,帮助开发者快速上手媒体应用开发。
一、媒体系统架构
HarmonyOS 媒体系统提供处理视觉、听觉信息的全面功能,包括音视频采集、压缩、存储、解压和播放等。其架构分为三个层次:
- 应用层: 提供音视频应用和图库应用的开发框架接口。
- 服务层: 提供媒体核心功能和管理机制,如编解码、音视频同步等。
- 设备层: 对接不同硬件芯片,提供适配和加速功能。
二、音频播放开发
HarmonyOS 提供多种 API 支持音频播放,开发者需要根据实际需求选择合适的方案:
API | 说明 | 适用场景 |
---|---|---|
AVPlayer | 功能完善的音视频播放 API,支持流媒体和本地资源播放,支持 mp3、m4a 等格式。 | 直接播放常见音频文件 |
AudioRenderer | 用于音频输出的 API,仅支持 PCM 格式,需应用持续写入音频数据。 | 需要对音频数据进行预处理或更精细控制的场景,如音频特效、音效合成等 |
OpenSL ES | 跨平台音频 Native API,仅支持 PCM 格式。 | 从其他嵌入式平台移植或需要 Native 层音频输出的场景 |
未来版本将提供更便捷的音效播放接口。
三、音频录制开发
类似于音频播放,音频录制也需根据需求选择合适的 API:
API | 说明 | 适用场景 |
---|---|---|
AVRecorder | 功能完善的音视频录制 API,支持音频输入、编码和封装,可生成 m4a 文件。 | 直接录制音频并保存为文件 |
AudioCapturer | 用于音频输入的 API,仅支持 PCM 格式,需应用持续读取音频数据。 | 需要对音频数据进行后处理或更精细控制的场景,如音频降噪、语音识别等 |
OpenSL ES | 跨平台音频 Native API,仅支持 PCM 格式。 | 从其他嵌入式平台移植或需要 Native 层音频输入的场景 |
注意: 录制音频属于隐私敏感行为,应用需先向用户申请 ohos.permission.MICROPHONE
权限。
四、音频通话开发
音频通话需要同时进行音频输出和输入,可分别使用 AudioRenderer
和 AudioCapturer
实现。开发者需注意管理音频场景模式和铃声模式,并在通话开始和结束时采取合适的音频策略。
五、视频播放开发
HarmonyOS 提供两种视频播放方案:
- AVPlayer: 功能完善的音视频播放 API,支持流媒体和本地资源播放,支持 mp4、mkv 等格式。
- Video 组件: ArkUI 提供的封装了基础视频播放能力的组件,设置数据源即可播放,但扩展能力较弱。
六、图片开发
图片开发涉及图片解码、处理和编码,HarmonyOS 提供以下关键类:
- ImageSource: 表示解码后的图片源,用于获取或修改图片信息。
- PixelMap: 表示图片的像素数据,可进行旋转、缩放、裁剪等处理。
- ImagePacker: 用于将
PixelMap
或ImageSource
压缩编码为新图片。
图片开发流程:
- 获取原始图片。
- 创建
ImageSource
实例。 - 使用
ImageSource
解码生成PixelMap
。 - 对
PixelMap
进行处理。 - 使用
Image
组件显示图片或使用ImagePacker
编码保存图片。