目录
思路分析AudioHolder.java属性类
SimpleLame.java调用lamemp3类
native-lib.cpp
AudioMerge.java拼接操作类
使用
思路分析
截取很简单,只要用MediaCodec进行解码解出pcm格式的数据,再把pcm数据用MediaCodec进行编码或者用其他第三方的进行编码>
拼接就比较麻烦,音频的音质会受到采样率,比特率和声道的影响,所以理想的状态是这三个属性要一样进行拼接才能保证音质 。
举个栗子,a和b是两首采样率,比特率和声道都不一样的歌,要拼接成c,首先要设置c的采样率,比特率和声道,这里用a的来进行设置,然后拼接,播放c的时候会发现a部分的音质是没问题的,到了b部分的时候音质就会出现问题。
解决这个问题很简单,先把a和b的采样率,比特率和声道都转成一样就可以了。对于音视频开发的人来说这个问题很好解决,就写个转换采样率,比特率和声道的工具,或者使用 ffmpeg。
通过github找到了几个,经过测试最后选择了lamemp3,lamemp3是c语言写的,怎么编译网上很多就不说了,好了开始正题 。
首先说说思路,先通过MediaCodec把要处理的几个音频解码出pcm文件,再把这些pcm文件通过lamemp3转成采样率,比特率和声道一样的mp3,再通过MediaCodec把这些mp3合并成一个pcm数据,最后就是把这个pcm数据转成自己想要的格式,可以用MediaCodec转成aac或者用lamemp3再转成mp3。
AudioHolder.java属性类
记录音频的采样率,比特率,声道,截取的开始时间,截取的结束时间,路径和文件名
public>SimpleLame.java调用lamemp3类
public>native-lib.cpp
#include>AudioMerge.java拼接操作类
public>使用
private>还有HMSDK这个文件夹自己创建或改成自己的,我都是保存在手机内是为了方便测试GitHub: https://github.com/a422070876/AudioMerge
以上就是android开发MediaCodec和lamemp3多段音频截取拼接的详细内容,更多关于MediaCodec和lamemp3音频截取拼接的资料请关注我们其它相关文章!










