关于android:Android实时将PCM转码MP3并播放音频

42次阅读

共计 1157 个字符,预计需要花费 3 分钟才能阅读完成。

AudioCapturePlay

基于 AudioRecord 录制原始 pcm 音频,应用开源库 lame 实时转换 pcm 音频为 MP3 格局音频,采纳 Service、MediaPlayer 播放 MP3,提供录制音频计时器显示,音频音量分贝值显示,音频频谱显示,录制、播放状态管制等

我的项目地址

  1. 独自音频录制播放 (https://github.com/MannaYang/AudioCapturePlay)
  2. 音视频录制合成 (https://github.com/MannaYang/AudioVideoCodec)

性能简介

目前蕴含根本的音频录制、播放操作, 性能如下:

  1. 基于 AudioRecord 录制原始 PCM 格局音频数据
  2. 基于 lame 库实时转换 PCM 音频为 MP3 格局音频
  3. 基于原始 lame 我的项目中 C 文件编译生成对应 so 文件、提供调用 lame 编码封装类
  4. 基于 FFT 格式化 PCM 数据并实时显示音频频谱
  5. 提供录制音频计时器显示、音量分贝值显示、录制开始、暂停、持续等状态管制与文件写入
  6. 提供 AudioPlayManager 对象管制 MediaPlayer 播放、暂停、持续状态、Timer 定时更新 SeekBar 进度条
  7. 提供 ObjectAnimator 形式实现唱针、唱片旋转、还原动画操作

其它音频格式:

  1. wav、m4a、aac 可在录制 PCM 格局实时回调中增加相应头文件、转换操作

lame 编解码

  1. lame_encode_buffer_interleaved 该办法为传入双声道音频 buffer, 如果 AudioCapture 中应用 AudioFormat.CHANNEL_IN_STEREO
  2. lame_encode_buffer 该办法为传入单声道音频 buffer, 如果 AudioCapture 中应用 AudioFormat.CHANNEL_IN_MONO

Chronometer、RoundedBitmapDrawable 控件类

  1. Chronometer 为原生计时器, 提供计时、倒计时等性能, 初始格局为 00:00, 通过 setFormat 格式化为 00:00:00, 暂停、持续计时需减掉已计时工夫戳
  2. RoundedBitmapDrawable 可作为圆角 Bitmap 应用, 通过 setCornerRadius、setCircular 可实现圆角设置、圆型

公共库

  1. 蕴含录音管制类、lame 编解码 cpp 文件、编译 so 文件、Service 播放管制类, 应用形式参见 app 中 AudioCaptureActivity.class

截图展现

录制开始、暂停、实现:

音频文件:

播放筹备:

播放中:

感激开源

  1. 音频频谱柱状图 https://github.com/zhaolewei/MusicVisualizer
  2. lame 编解码库 https://sourceforge.net/projects/lame/files/lame
正文完
 0