媒体开发概览
HarmonyOS提供丰富的一站式媒体业务开放能力,开发者能够在系统上快速开发主流的媒体业务,满足常规高频使用场景,并提供优秀的性能表现。
媒体系统架构

媒体系统架构提供用户视觉、听觉信息的处理能力,例如音视频信息的采集、编码存储、解码播放等。操作系统实现中,根据不同的媒体信息处理内容,将媒体划分为不同的模块,包括音频、视频、图片等。
媒体系统面向应用开发提供音视频应用、图库应用、相机应用的编程框架接口;面向设备开发提供对接不同硬件芯片的适配加速功能;中间以服务形式提供媒体核心功能和管理机制。
- 音频服务(Audio Kit):提供场景化音频播放和录制接口,助力开发者快速构建音频高清采集及沉浸式播放能力。
- 音视频编解码服务(AVCodec Kit):提供音视频编解码、媒体文件解析、封装及媒体数据输入等原子能力。
- 音视频播控服务(AVSession Kit):提供系统级音视频管控服务,统一管理系统中所有音视频行为。
- 相机服务(Camera Kit):提供场景化相机控制管理接口,实现预览图像显示、拍照图片保存及视频录制功能。
- 数字版权保护服务(DRM Kit):提供DRM加密音视频解密,支持设备DRM证书管理、许可证管理及内容解密功能。
- 图片处理服务(Image Kit):提供全面图片处理能力,帮助开发者实现图片的解码、编码、编辑、元数据处理和图片接收等功能。
- 媒体服务(Media Kit):提供端到端播放原始媒体资源,音视频录制与屏幕录制,获取媒体资源元数据、缩略图,视频转码等功能。
- 媒体文件管理服务(Media Library Kit):提供管理相册和媒体文件的能力,包括照片和视频。
- 铃声服务(Ringtone Kit):提供铃声设置功能,为用户提供简单一致、安全高品质的铃声设置体验。
- 统一扫码服务(Scan Kit):提供系统级的扫码服务。
媒体应用开发综述
相机预览
相机预览是启动相机后实时的图像显示,通常在拍照和录像前执行。
指南
- 预览(ArkTS)
- 双路预览(ArkTS)
- 动态调整预览帧率(ArkTS)
- 适配相机旋转角度(ArkTS)
- 预览(C/C++)
- 预览流二次处理(C/C++)
- 动态调整预览帧率(C/C++)
- 适配相机旋转角度(C/C++)
API参考
最佳实践
相机拍照
拍照是相机的最重要功能之一,Camera Kit提供多种拍照方式,开发者可以直接拉起系统相机拍照、采用系统预配置简化应用开发流程,或是根据开放接口开发一个专业的相机应用。
指南
- 通过系统相机拍照和录像(CameraPicker)
- 拍照(ArkTS)
- 分段式拍照(ArkTS)
- 动态照片拍摄(ArkTS)
- 使用相机预配置(ArkTS)
- HDR Vivid相机拍照(ArkTS)
- 适配相机旋转角度(ArkTS)
- 拍照(C/C++)
- 分段式拍照(C/C++)
- 使用相机预配置(C/C++)
- 适配相机旋转角度(C/C++)
API参考
- ArkTS API:camera
- ArkTS组件:cameraPicker
- C API:OH_Camera
最佳实践
示例代码
视频播放
AVPlayer提供功能齐全的一体化播放能力,支持多种音视频格式和流媒体协议。应用使用AVPlayer不仅可以实现基础的播放控制,还可以通过外挂字幕、画中画、自定义UI控件、内容版权保护等功能,为用户提供优良的影音体验。
指南
- AVPlayer简介(含支持的格式与协议)
- 使用AVPlayer播放视频(ArkTS)
- 使用AVPlayer设置播放URL(ArkTS)
- 使用AVPlayer播放流媒体(ArkTS)
- 使用AVPlayer添加视频外挂字幕(ArkTS)
- 使用AVPlayer播放视频(C/C++)
- HDR Vivid视频播放
- 接入Background Tasks Kit长时任务实现后台播放
- 应用接入AVSession
- 应用接入播控自检
- 基于AVPlayer播放DRM节目(ArkTS)
- 视频转码(ArkTS)
- 在应用程序中使用画中画功能
API参考
最佳实践
示例代码
设计体验
视频录制
AVRecorder提供音视频录制的能力,AVScreenCapture提供屏幕录制的能力,支持多源输入,可灵活配置录制参数,帮助开发者轻松实现音视频录制功能。
指南
- AVRecorder简介(含支持的格式)
- 使用AVRecorder录制视频(ArkTS)
- AVScreenCapture简介(含支持的格式)
- 使用AVScreenCaptureRecorder录屏写文件(ArkTS)
- 使用AVScreenCapture录屏取码流(C/C++)
- 使用AVScreenCapture录屏写文件(C/C++)
- HDR Vivid相机录像
- HDR Vivid视频录制
- 使用Camera Kit录像(ArkTS)
API参考
- ArkTS API:AVRecorder
- C API:AVRecorder
- ArkTS API:AVScreenCaptureRecorder
- C API:AVScreenCapture
示例代码
视频投播
使用媒体播控,可以简单高效地将音视频投放到其他HarmonyOS设备上播放,如在手机上播放的音视频,可以投到2in1设备上继续播放。
指南
API参考
- ArkTS API:avsession
- ArkTS组件:AVCastPicker
示例代码
音频播放
开发者可以使用AVPlayer播放媒体资源,如mp4/mp3/mkv/mpeg-ts等,也可以使用AudioRenderer播放PCM音频数据。
AVPlayer指南
- 使用AVPlayer播放音频(ArkTS)
- 使用AVPlayer设置播放URL(ArkTS)
- 使用AVPlayer播放流媒体(ArkTS)
- 使用SoundPool播放短音频(ArkTS)
- 使用AVPlayer播放音频(C/C++)
AVPlayer API参考
AudioRenderer指南
AudioRenderer API参考
- ArkTS API:AudioRenderer
- ArkTS API:audioHaptic
- C API:OHAudio
通用指南
- 接入Background Tasks Kit长时任务实现后台播放
- 应用接入AVSession
- 应用接入播控自检
- 使用合适的音频流类型
- 音频焦点和音频会话介绍
- 使用AudioSession管理应用音频焦点(ArkTS)
- 使用AudioSession管理应用音频焦点(C/C++)
最佳实践
示例代码
设计体验
音频采集
AudioCapture提供了音频采集能力,为开发者提供PCM原始数据。
指南
API参考
- ArkTS API:AudioCapturer
- C API:OHAudio
示例代码
音频录制
AVRecorder提供音频录制的能力,帮助开发者录制纯音频文件。
指南
API参考
- ArkTS API:AVRecorder
- C API:AVRecorder
媒体资源的选择和保存
指南
API参考
- ArkTS API:photoAccessHelper
- ArkTS组件:AlbumPickerComponent
- ArkTS组件:PhotoPickerComponent
- ArkTS组件:RecentPhotoComponent
最佳实践
示例代码
隐私安全
在进行媒体应用开发过程中,应用需要访问个人数据(如用户照片、视频、音频文件等)和设备数据(如相机、麦克风等)。这些资源受系统保护,使用时需通过Picker或申请相关权限。
访问个人数据
应用需要克隆、备份或同步图片/视频类文件时,可申请受限权限读写媒体库。
访问设备数据
麦克风权限ohos.permission.MICROPHONE、相机权限ohos.permission.CAMERA、媒体地理位置信息权限ohos.permission.MEDIA_LOCATION,均为用户授权权限,申请方式见向用户申请授权。
更多资源
Audio Kit
| 分类 | 资源链接 |
|---|---|
| 音频焦点 | - 开发指南:使用合适的音频流类型 - 开发指南:音频焦点和音频会话 - ArkTS API参考:AudioSession - ArkTS API参考:StreamUsage |
| 音频通话 | - 开发指南:使用AudioRenderer播放对端的通话声音 - 开发指南:使用AudioCapturer录制本端的通话声音 |
| 更多 | Audio Kit开发指南 Audio Kit API参考 |
AVCodec Kit
| 分类 | 资源链接 |
|---|---|
| 音频编解码 | - 开发指南:音频编码 - 开发指南:音频解码 - 示例代码:AudioEncoder(音频编码) - 示例代码:AudioDecoder(音频解码) - C API参考:AudioCodec(音频编解码) |
| 视频编解码 | - 开发指南:视频编码 - 示例代码:VideoEncoder(视频编码) - C API参考:VideoEncoder(视频编码) - 开发指南:视频解码 - 示例代码:VideoDecoder(视频解码) - C API参考:VideoDecoder(视频解码) |
| 更多 | AVCodec Kit开发指南 AVCodec Kit API参考 |
AVSession Kit
| 分类 | 资源链接 |
|---|---|
| 本地媒体会话 | - ArkTS API参考:媒体会话管理 - 开发指南:应用接入AVSession场景介绍 - 示例代码:基于AVPlayer实现播放接入 - 示例代码:基于AudioRenderer实现播放接入 |
| 更多 | AVSession Kit开发指南 AVSession Kit API参考 |
Camera Kit
| 分类 | 资源链接 |
|---|---|
| 视频录制 | - ArkTS API参考:Camera API(相机管理) - 开发指南:录像(ArkTS) - 开发指南:录像(C/C++) - 示例实现:录像实践(ArkTS) |
| 安全相机 | - ArkTS API参考:SecureSession - 开发指南:安全相机(ArkTS) |
| 更多 | Camera Kit开发指南 Camera Kit API参考 |
DRM Kit
| 分类 | 资源链接 |
|---|---|
| AVPlayer播放DRM节目 | - ArkTS API参考:DRM - 开发指南:数字版权保护(ArkTS) - 示例实现:基于AVPlayer播放DRM节目(ArkTS) |
| AVCodec播放DRM节目 | - C API参考:数字版权保护API(C/C++) - 开发指南:数字版权保护(C/C++) - 示例实现:基于AVCodec播放DRM节目(C/C++) |
| 更多 | DRM Kit开发指南 DRM Kit API参考 |
Image Kit
| 分类 | 资源链接 |
|---|---|
| 图片解码 | 支持HEIF、JPEG、PNG、WebP、GIF、BMP、SVG、ICO、DNG格式图片的解码。 - ArkTS指南:使用ImageSource完成图片解码 - C/C++指南:使用Image_NativeModule完成图片解码 支持自定义申请内存类型,优化解码效率。 - ArkTS指南:申请图片解码内存(ArkTS) - C/C++指南:申请图片解码内存(C/C++) |
| 图片编码 | 支持编码为HEIF、JPEG、PNG、WebP、GIF格式图片。 - ArkTS指南:使用ImagePacker完成图片编码 - C/C++指南:使用Image_NativeModule完成图片编码 |
| 图片接收 | 支持作为消费者接收和处理图片。 - ArkTS指南:使用ImageReceiver完成图片接收 - C/C++指南:使用Image_NativeModule完成图片接收 |
| 图片编辑和处理 | 支持裁剪、缩放、偏移、旋转、翻转、设置透明度等图像变换,以及对图片部分区域做像素数据写入的位图操作。 - ArkTS指南:使用PixelMap完成图像变换 - ArkTS指南:使用PixelMap完成位图操作 - C/C++指南:使用Image_NativeModule完成位图操作 支持读取和编辑图片的EXIF信息。 - ArkTS指南:编辑图片EXIF信息 - C/C++指南:使用Image_NativeModule编辑图片EXIF信息 支持为图片添加个性化的滤镜效果。 - C/C++指南:使用ImageEffect编辑图片 支持对图片做清晰度增强、色彩空间转换、HDR效果转换。 - C/C++指南:图片缩放 - C/C++指南:图片色彩空间转换 - C/C++指南:图片动态元数据生成 - C/C++指南:单层HDR图片转换双层 - C/C++指南:双层HDR图片转换单层 |
| 更多 | Image Kit开发指南 Image Kit API参考 |
Media Kit
| 分类 | 资源链接 |
|---|---|
| 视频转码 | - ArkTS API参考:AVTranscoder - 开发指南:使用AVTranscoder实现视频转码(ArkTS) - 开发指南:创建异步线程执行AVTranscoder视频转码(ArkTS) |
| 元数据 | - ArkTS API参考:AVMetadataExtractor - C API参考:AVMetadataExtractor - 开发指南:使用AVMetadataExtractor提取音视频元数据信息(ArkTS) - 开发指南:使用AVMetadataExtractor获取元数据(C/C++) |
| 缩略图 | - ArkTS API参考:AVImageGenerator - C API参考:AVImageGenerator - 开发指南:使用AVImageGenerator提取视频指定时间图像(ArkTS) - 开发指南:使用AVImageGenerator获取视频帧(C/C++) - 最佳实践:基于系统能力获取视频缩略图 |
| 更多 | Media Kit开发指南 Media Kit API参考 |
Media Library Kit
| 分类 | 资源链接 |
|---|---|
| 管理动态照片 | - 指南:访问和管理动态照片资源 - 指南:使用MovingPhotoView播放动态照片 |
| 更多 | Media Library Kit开发指南 Media Library Kit API参考 |
Ringtone Kit
| 分类 | 资源链接 |
|---|---|
| 铃声设置服务 | - ArkTS API参考:铃声服务 - 指南:设置铃声 |
Scan Kit
| 分类 | 资源链接 |
|---|---|
| 默认界面扫码 | - ArkTS API参考:默认界面扫码 - 指南:默认界面扫码 |
| 自定义界面扫码 | - ArkTS API参考:自定义界面扫码 - 指南:自定义界面扫码 |
| 图像识码 | - ArkTS API参考:图像识码 - 指南:识别本地图片 - 指南:识别图像数据 |
| 码图生成 | - ArkTS API参考:码图生成 - 指南:通过文本生成码图 - 指南:通过字节数组生成码图 |