Android 如何采用Lame编码器编码mp3文件
这篇文章会基于下面3个问题来展开讲解。
1、什么是Lame?
2、为什么采用Lame?
3、Lame在Android应用上如何使用?
一、什么是Lame
我们看下Lame官网(lame.sourceforge.io/index.php)给的描述
LAMEisahighqualityMPEGAudioLayerIII(MP3)encoderlicensedundertheLGPL.
翻译成中文就是:LAME是一个高质量的MPEG音频层III(MP3)编码器,在LGPL下授权。
好了,现在我们知道Lame就是个开源的编码器,而且是专门用来编码mp3文件的。
二、为什么要采用Lame
在Android上开发过录音功能的同学应该知道,在Android上要实现录音功能,有2种方式。一种是采用AudioRecord的方式,AudioRecord录制的直接是原始的pcm数据,另一种方式就是采用MediaRecord,可以录制类似amr、aac格式的文件。
这里贴下MediaRecord目前支持的录音格式,可以看到目前是不支持mp3的。那这时我们想要编码mp3的文件,就得借助lame来实现了。
publicfinalclassAudioEncoder{ /*Donotchangethesevalueswithoutupdatingtheircounterparts *ininclude/media/mediarecorder.h! */ privateAudioEncoder(){} publicstaticfinalintDEFAULT=0; /**AMR(Narrowband)audiocodec*/ publicstaticfinalintAMR_NB=1; /**AMR(Wideband)audiocodec*/ publicstaticfinalintAMR_WB=2; /**AACLowComplexity(AAC-LC)audiocodec*/ publicstaticfinalintAAC=3; /**HighEfficiencyAAC(HE-AAC)audiocodec*/ publicstaticfinalintHE_AAC=4; /**EnhancedLowDelayAAC(AAC-ELD)audiocodec*/ publicstaticfinalintAAC_ELD=5; /**OggVorbisaudiocodec*/ publicstaticfinalintVORBIS=6; /**@hideEVRCaudiocodec*/ publicstaticfinalintEVRC=10; /**@hideQCELPaudiocodec*/ publicstaticfinalintQCELP=11; /**@hideLinearPCMaudiocodec*/ publicstaticfinalintLPCM=12; }
三、Lame在Android应用上如何使用
在android上集成开源的代码,很多时候套路都差不多,就是下载源码,编译出相关的so库,然后就是调用这些库提供的方法了,当然,调用so库里面的方法,应用上需要借助jni来实现。
这里就不介绍如何下载lame源码和编码so库了。编译lame源码后,我们会得到一个libmp3lame.so的库文件,调用这个so库里面的方法,还需要我们去实现JNI部分的代码。
整体的思路就是,应用层通过调用JNI提供的native方法,然后调用到 libmp3lame.so库里面的方法,实现编码mp3文件。
这里给出的一个例子是将pcm格式的文件编码mp3格式的文件。
代码git地址:github.com/yorkZJC/And… 代码逻辑这里简单讲下:
LameEncodeJniNative.java是本地封装的native方法,为应用层提供了2个方法,一个是编码,一个是结束。这2个方法对应c++层具体的实现,可以看工程cpp/目录下文件的实现,cpp文件里面的实现也比较简单。
应用代码调用的时候,就是传入对应的pcm源文件和需要生成的mp3文件路径,还有pcm源文件的格式信息(采用率、通道数、编码数据位数)。
FilepcmFile=newFile(getExternalFilesDir(null),"input.pcm"); Filemp3File=newFile(getExternalFilesDir(null),"output.mp3"); mLameEncoder=newLameEncodeJniNative(); mLameEncoder.encode(pcmFile.getAbsolutePath(),mp3File.getAbsolutePath(),44100,2,128);
以上就是Android如何采用Lame编码器编码mp3文件的详细内容,更多关于Android编码mp3文件的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。