# AudioCodec_7 **Repository Path**: gwx1427087/audio-codec_7 ## Basic Information - **Project Name**: AudioCodec_7 - **Description**: 基于系统能力的音频编解码示例 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2025-09-05 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于OH_AVCodec编解码能力实现音频编解码 ## 项目简介 本示例基于OH_AVCodec编解码能力和OH_Audio能力,实现音频的播放、压缩、转换和录制等功能。通过调用Native侧的音频采集器实现音频的录制,通过编码器,解码器,以及封装和解封装,实现音频的播放和转码。基于本示例可帮助应用开发需要编解码进行音频播放和录制的场景。 - 音频播放的主要流程:选择本地音频->解封装->解码->播放 - 音频转码的主要流程:选择本地音频->解封装->解码->编码->封装->保存文件到本地 - 音频录制的主要流程:麦克风采集->编码->封装->保存文件到本地 ## 效果预览 | 应用主界面 | 应用使用展示 | |------------------------------------|------------------------------------| | | | ## 使用说明 ### 录制 1. 点击“录制”按钮,弹出是否允许“AudioCodec”访问你的麦克风,点击“允许”。 2. 点击“允许”后,弹出选择录制格式,选好需要录制的格式后,弹出目标保存格式,选好保存格式后,弹出选择保存文件路径和文件名。 3. 点击“暂停”图标暂停录制,点击“继续”图标继续录制,再次点击红色图标终止录制。 4. 终止录制后,弹出是否保存到本地,点击“确定”,等待3秒后再退出录制界面。 ### 播放 1. 点击“本地音频选择”按钮,选择要播放的音频文件,点击“播放”图标开始播放音频,点击“暂停”图标暂停播放音频。 2. 点击“转码”按钮,弹出转码格式,选好需要转码的格式后后,弹出选择保存文件路径和文件名,点击“确定”,弹出是否保存到本地,点击“确定”。 ## 工程目录 ``` ├──entry/src/main/cpp // Native层 │ ├──capbilities │ │ ├──include │ │ │ ├──AudioCapturer.h // 音频采集接口定义 │ │ │ ├──AudioDecoder.h // 音频解码接口定义 │ │ │ ├──AudioEncoder.h // 音频编码接口定义 │ │ │ ├──AVCodecSampleError.h // 日志参数接口定义 │ │ │ ├──Demuxer.h // 解封装接口定义 │ │ │ ├──Muxer.h // 封装接口定义 │ │ │ ├──SampleCallback.h // 编解码回调接口定义 │ │ │ └──SampleInfo.h // 功能实现公共类 │ │ └──src │ │ ├──AudioCapturer.cpp // 音频采集实现 │ │ ├──AudioDecoder.cpp // 音频解码实现 │ │ ├──AudioEncoder.cpp // 音频编码实现 │ │ ├──Demuxer.cpp // 解封装实现 │ │ ├──Muxer.cpp // 封装实现 │ │ └──SampleCallback.cpp // 编解码回调实现 │ ├──player │ │ ├──include │ │ │ ├──Player.h // Native层播放功能调用逻辑接口 │ │ │ ├──PlayerNative.h // Native层 播放的入口 │ │ │ ├──Summary.h // Native层 转码的入口 │ │ │ └──Transcoding.h // Native层 配置的入口 │ │ └──src │ │ ├──Player.cpp // Native层播放功能调用逻辑的实现 │ │ ├──PlayerNative.cpp // Native层 播放的入口 │ │ ├──Summary.cpp // Native层 转码的入口 │ │ └──Transcoding.cpp // Native层 配置的入口 │ │──recorder │ │ ├──include │ │ │ ├──Recorder.h // Native层录制功能调用逻辑的接口 │ │ │ └──RecorderNative.h // Native层 录制的入口 │ │ └──src │ │ ├──Recorder.cpp // Native层录制功能调用逻辑的实现 │ │ └──RecorderNative.cpp // Native层 录制的入口 │ ├──types │ │ ├──libplayer // 播放模块暴露给UI层的接口 │ │ └──librecorder // 录制模块暴露给UI层的接口 │ └──CMakeLists.txt // cmake配置文件 ├──ets // ui层 │ ├──common │ │ ├──utils │ │ │ └──Logger.ets // 日志工具 │ │ │ └──MusicMetadataService.ets // 获取音频元数据 │ │ └──CommonConstants.ets // 参数常量 │ ├──component │ │ ├──SavePicker.ets // 保存格式 │ │ └──SelectPicker.ets // 录制参数 │ ├──entryability │ │ └──EntryAbility.ets │ ├──entrybackupability │ │ └──EntryBackupAbility.ets │ └──pages │ ├──BehaviorChoice.ets // 播放转码页面 │ ├──Index.ets // 主页面 │ └──Recorder.ets // 录制页面 ├──resources // 用于存放应用所用到的资源文件 └──module.json5 // 模块配置信息 ``` ## 相关权限 1. ohos.permission.KEEP_BACKGROUND_RUNNING:允许Service Ability在后台持续运行。 2. ohos.permission.INTERNET:允许使用Internet网络。 3. ohos.permission.MICROPHONE:允许应用使用麦克风。 ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. HarmonyOS系统:HarmonyOS 5.1.1 Release。 3. DevEco Studio版本:DevEco Studio 5.1.1 Release。 4. HarmonyOS SDK版本:HarmonyOS 5.1.1 Release SDK。