50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

【HarmonyOS- 媒体技术 -AVRecorder】音视频录制功能开发全攻略

  • 2025-10-13
    北京
  • 本文字数:1949 字

    阅读完需:约 6 分钟

【HarmonyOS-媒体技术-AVRecorder】音视频录制功能开发全攻略

🌟 你还在为音视频录制功能发愁吗?

HarmonyOS 的 AVRecorder,就是你一直在寻找的那把“万能钥匙”!


🎧 📹一、功能全面,兼容性强,开箱即用


AVRecorder 是 HarmonyOS 平台上强大的音视频录制组件,支持以下主流格式:

· 音频编码格式:AAC、MP3 等

· 视频编码格式:H.264 / AVC、H.265 / HEVC 等

· 封装格式:MP4、M4A 等

无论是会议备忘录音、K 歌自嗨,还是 VLog 记录生活场景的功能开发,AVRecorder 都能轻松应对!典型应用:智能录音笔自定义相机看家监控等!


🧩 二、开发门槛低,功能强大,支持多种语言


✅ ArkTS 开发

· 快速构建音视频录制界面

· 状态监听、错误捕获、流程控制一体化


✅ C/C++ NDK 开发

· 与底层硬件深度整合,适用于相机、音视频引擎等复杂项目

· 高性能音视频采集与处理


📦 三、开发流程清晰,代码结构规范,易于维护


🎯 音视频播放流程(ArkTS 示例):

// 1. 创建 AVRecorder 实例const avRecorder = await media.createAVRecorder();
// 2. 配置参数并准备录制const avConfig = { audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, videoSourceType: media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, profile: { audioBitrate: 112000, audioChannels: 2, audioCodec: media.CodecMimeType.AUDIO_AAC, fileFormat: media.ContainerFormatType.CFT_MPEG_4, videoBitrate: 200000, videoCodec: media.CodecMimeType.VIDEO_AVC, videoFrameWidth: 640, videoFrameHeight: 480, }, url: 'fd://xx', // 参考应用文件访问与管理开发示例新建并读写一个文件。};
await avRecorder.prepare(avConfig);
// 3. 获取 Surface ID,传递给相机模块await avRecorder.getInputSurface();
// 4. 开始/暂停/恢复/停止录制avRecorder.start();avRecorder.pause();avRecorder.resume();avRecorder.stop();
// 5. 释放资源avRecorder.reset();avRecorder.release();
复制代码


🔧 四、NDK 开发:


✅ 示例代码片段(C++):

// 1. 创建 AVRecorder 实例OH_AVRecorder* avRecorder = OH_AVRecorder_Create();
// 2. 配置参数并准备录制OH_AVRecorder_Config config;config.audioSourceType = AVRECORDER_MIC;config.profile.audioBitrate = 96000;config.profile.audioChannels = 2;config.profile.audioCodec = AVRECORDER_AUDIO_AAC;config.profile.audioSampleRate = 48000;config.profile.fileFormat = AVRECORDER_CFT_MPEG_4;config.fileGenerationMode = AVRECORDER_APP_CREATE;config.metadata.location.latitude = 27.791863;config.metadata.location.longitude = 64.574687;
OH_AVRecorder_Prepare(avRecorder, &config);
// 3.启动相机,获取 Surface ID,传递给相机模块OH_AVRecorder_GetInputSurface(avRecorder, &window);
// 4. 开始/暂停/恢复/停止录制OH_AVRecorder_Start(avRecorder);OH_AVRecorder_Pause(avRecorder);OH_AVRecorder_Resume(avRecorder);OH_AVRecorder_Stop(avRecorder);
// 5. 释放资源OH_AVRecorder_Reset(avRecorder);OH_AVRecorder_Release(avRecorder);
复制代码


💡 五、开发建议与最佳实践


· 严格遵守状态机规则:只有在 started 状态下才能调用 pause(),在 paused 状态下才能调用 resume()。

· 资源释放不可忽视:录制结束后务必调用 release()避免内存、线程等系统资源泄漏。

· 权限管理要到位:当需要使用麦克风时,需提前申请麦克风权限。


🎉 六、为什么选择 AVRecorder


· 高效稳定,轻松构建专业级音视频应用

AVRecorder 提供了方便快捷的音视频录制能力,帮助开发者快速构建稳定流畅的多媒体应用,生成音视频文件。

· 原生支持,无缝加入鸿蒙生态

作为鸿蒙系统原生的录制框架,AVRecorder 与系统深度集成,兼容性强,能充分发挥鸿蒙设备的硬件能力,为开发者提供更顺畅的开发体验和更佳的用户体验。

· 灵活配置,满足多样化需求

支持多种音视频格式、编码参数和录制模式的自定义配置,开发者可根据不同应用场景灵活调整录制设置,打造个性化的音视频解决方案。

· 开放文档与社区支持,快速上手

提供完善的官方文档和丰富的示例代码,配合活跃的开发者社区支持,帮助开发者快速掌握 AVRecorder 的使用技巧,提升开发效率。


📢 七、立即行动,开启你的音视频播放开发之旅!


👉 点击了解完整开发示例与 API 文档

HarmonyOS AVPlayer 开发指南 ArkTS API

HarmonyOS AVPlayer 开发指南 C API


🌐 加入 HarmonyOS 社区,共创未来!

我们诚邀广大开发者一起参与 HarmonyOS 技术生态建设,共建更开放、更智能的未来世界!

👉 加入开发者社区,获取最新资讯和技术支持

HarmonyOS 官方社区


📣 让  AVRecorder 成为你开发路上的得力助手,开启你的音视频播放新纪元! 🚀

2025-10-13 16:4311

评论

发布
暂无评论

音视频八股文(9)-- flv的h264六层结构和aac六层结构

福大大架构师每日一题

音视频 ffmpeg 福大大

Django笔记二十之手动编写migration文件

Hunter熊

Python django migration

深入理解vue2.x中Object.defineproperty()和vue3.x中Proxy

不叫猫先生

Vue 三周年连更

vue2.x中keep-alive源码解析以及LRU缓存策略使用

不叫猫先生

缓存 Vue LRU keep-alive实现原理 三周年连更

【程序猿未来之路】作为互联网技术人的“我们”该如何破局 | 社区征文

码界西柚

4月日更 AIGC 三周年征文 三周年连更 生存指南

Matlab实现周期卷积

袁袁袁袁满

三周年征文

算法题每日一练:螺旋矩阵 II

知心宝贝

数据结构 算法 前端 后端 三周年连更

如何进一步提高AI输出质量?

石云升

AI ChatGPT 三周年连更

Qz学算法-数据结构篇(顺序存储二叉树、线索化+遍历)

浅辄

数据结构 三周年连更

KubeShark: Kubernetes的Wireshark

俞凡

Kubernetes 云原生

设计一个即时群聊天系统软件(采用华为云ECS服务器作为云服务端 )

DS小龙哥

三周年连更

为什么 Go for-range 的 value 值地址每次都一样?

AlwaysBeta

Go 面试

如何实现网站访问量的统计?

海拥(haiyong.site)

三周年连更

一文了解Spring Framework 5 新 Web 框架:Spring WebFlux

Java架构历程

三周年连更

为什么老有人想让我们“程序员”失业? | 社区征文

se7en

三周年征文

2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109

福大大架构师每日一题

golang 算法 rust 福大大

为什么说:Linux中一切皆文件?

wljslmz

Linux 三周年连更

OpenGL入门一:基础知识及概念

轻口味

opengl 图形图像 三周年连更

Prometheus监控神器-自动发现篇

乌龟哥哥

三周年连更

Windows下 IDE工具常见编译错误FAQ下

鸿蒙之旅

OpenHarmony 三周年连更

什么是 RUM JavaScript

汪子熙

JavaScript 前端开发 三周年连更

IT组织架构之反思

agnostic

IT组织

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

西柚子

1500字讲懂单体架构和微服务架构的区别

Java架构历程

三周年连更

重磅!算能公司算丰SG2042斩获第六届数字中国建设峰会“十大硬核科技”

极客天地

面对“失业焦虑”我们可以做些什么?| 社区征文

莪是男神

三周年征文

技术分享:如何将JSON中的日期格式字符串替换为占位符

IT蜗壳-Tango

三周年连更

算法题每日一练:无重复字符的最长子串

知心宝贝

数据结构 算法 前端 后端 三周年连更

什么是软件开发领域的 obsolete 或者 deprecated 含义

汪子熙

软件工程 软件开发 三周年连更

这 30 个工具和服务可以更好地监控和管理 Linux 服务器,很全面!

wljslmz

三周年连更

OpenGL入门二:绘制三角形

轻口味

opengl 图形图像 三周年连更

【HarmonyOS-媒体技术-AVRecorder】音视频录制功能开发全攻略_HarmonyOS_HarmonyOS_InfoQ精选文章