PCM文件转换为MP3文件

简要描述

主要协助云上越秀App对接云学堂.AI智能教练H5过程中,云上越秀App需要实现的功能代码示例;

引入方式

  1. 附件中有相关实现源码,如果不修改C语言源文件,可以直接使用LameUtil/libs/下的so文件(具体需要哪个平台,按需求选取)

  2. 将附件解压后,将LameUtil/src/main/java/目录下的LameMP3Converter文件引入到主工程项目中即可

使用方法

在主工程调用前必须先初始化,init的具体参数可以直接使用,记得convertMp3操作在线程中进行

  1. LameMP3Converter.init(16000, 1, 0, 16000, 64, 7)
  2. LameMP3Converter.convertMp3(filePath, destFilePath)

备注

  1. Lame编译配置:
    参考
    https://wufengxue.github.io/2019/05/25/wechat-voice-codec-lame.html
    https://github.com/Jay-Goo/Mp3Converter
    https://blog.csdn.net/bjrxyz/article/details/73435407?locationNum=15&fps=1
    https://www.jianshu.com/p/fb531239cd79
    https://github.com/GavinCT/AndroidMP3Recorder
    需要配置NDK

  2. PCM转MP3:
    由于讯飞SDK生成的是16000, 16bit, 单声道
    只测试了单声道的效果,多声道效果没有测试

这个功能是参考 https://github.com/Jay-Goo/Mp3Converter 库做的
不过这个库有两个问题

  1. 没法编码单声道pcm文件
  2. 最后一段录音没有

解决方案记录:
1 可以通过使用lame_encode_buffer解决
2 需要在read=0读取结束时再write一遍数据fwrite