当前位置: 移动技术网 > 移动技术>移动开发>Android > Android MP3文件录制 + 声音分贝大小自定义View实现

Android MP3文件录制 + 声音分贝大小自定义View实现

2020年07月13日  | 移动技术网移动技术  | 我要评论

最近项目中需要录制Mp3文件,但是大家都知道Mp3文件Android原生是不支持录制的,所以我用到了Lame库进行将原始音频PCM数据边录边转,不多BB,先上图。

大体实现逻辑如下:

音频相关概念:

       PCM:最为原始的一种格式,PCM 数据是音频的裸数据格式,不经过任何压缩。

       MP3:全称MPEG Audio Layer3,是一种高效的计算机音频编码方案,它以较大的压缩比(1:10至1:12)将音频文件转换成较小的扩展名为.mp3的文件,且能基本保持原文件的音质。

       Lame:是Mike Cheng于1998年发起的一个开源项目,是目前最好的MP3编码引擎。Lame编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性,配合VBR和ABR参数,音质几乎可以媲美CD音频,但文件体积却非常小。

       PCM转Mp3:需要借助JNI来调用Lame的C语言代码,实现音频格式的转化。

       采样率:每秒从连续信号中提取并组成离散信号的采样个数,采样率和文件大小成正比。

 

  * 8,000 Hz - 电话所用采样率, 对于人的说话已经足够;;
  * 11,025 Hz;
  * 22,050 Hz - 无线电广播所用采样率;
  * 32,000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率;
  * 44,100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率;

采样位宽:采样值用多少位0和1来表示,也叫采样精度,用的位数越多就越接近真实声音。如用8位表示,采样值取值范围就是-128 ~ 127,如用16位表示,采样值取值范围就是-32768 ~ 32767。

码率 = 采样频率 * 采样位数 * 声道个数;  码率跟文件大小成正比。

 

Lame库介绍:

    init(int inSampleRate, int outChannel, int outSampleRate, int outBitrate, int quality);   //inSampleRate:输入采样率   outChannel:输入声道数   outSampleRate:输出采样率   outBritrate:位宽   quality:MP3音频质量。0~9。 其中0是最好,非常慢,9是最差,推荐7
    encode(short[] buffer_l, short[] buffer_r, int samples, byte[] mp3buf);  //bufferLeft : 左声道数据   bufferRight:右声道数据  samples :每个声道输入数据大小   mp3buf :用于接收转换后的数据。7200 + (1.25 * buffer_l.length)
    flush(byte[] mp3buf);  //将MP3结尾信息写入buffer中。传入参数:mp3buf至少7200字节。这里还是用以前定义的mp3buf来传入,避免创建过多的数组。
    close();  //关闭释放Lame

 

Mp3编码流程:

  1. 创建AudioRecord对象,设置采样率、采样位宽,获取缓冲区通过AudioRecord.getMinBufferSize方法可以获取到合适的最小缓冲区。
  2. 开启录制audioRecord.startRecording(),循环读取录制数据通过audioRecord.read方法,然后往Mp3编码线程中实时写入读取到的数据。
  3. MP3线程利用生产者消费者模式实时获取到数据,并且调用lame库的encode方法进行编码,并且将编码完成后的数据写入文件。
  4. 录制完成后,调用lame库中的flush方法进入MP3尾信息。

 

 

文件大小与参数对比

采样率(KHz) 

采样位宽(bit)

时长(分)

文件大小

 声音质量

8 8 5 300KB 电话
8 16 5 600KB 电话
16 8 5 300KB 无线电广播
16 16 5 600KB 无线电广播
44.1 8 5 1.2MB CD音质
44.1 16 5 1.2MB CD音质

结论:最优为采样率16KHz,采样位宽8bit,1秒1KB数据。

 

完整项目下载地址https://github.com/liweidong93/Mp3Encoder

下载即用!!!!

 

 

本文地址:https://blog.csdn.net/no_loafer/article/details/107251294

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网