亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Android 如何采用Lame編碼器編碼mp3文件

瀏覽:6日期:2022-09-20 15:53:20

這篇文章會(huì)基于下面3個(gè)問題來展開講解。

1、什么是Lame?

2、為什么采用Lame?

3、Lame在Android應(yīng)用上如何使用?

一、什么是Lame

我們看下Lame官網(wǎng)(lame.sourceforge.io/index.php)給的描述

LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL.

翻譯成中文就是:LAME是一個(gè)高質(zhì)量的MPEG音頻層III (MP3)編碼器,在LGPL下授權(quán)。

好了,現(xiàn)在我們知道Lame就是個(gè)開源的編碼器,而且是專門用來編碼mp3文件的。

二、為什么要采用Lame

在Android上開發(fā)過錄音功能的同學(xué)應(yīng)該知道,在Android上要實(shí)現(xiàn)錄音功能,有2種方式。一種是采用AudioRecord的方式,AudioRecord錄制的直接是原始的pcm數(shù)據(jù),另一種方式就是采用MediaRecord,可以錄制類似amr、aac格式的文件。

這里貼下MediaRecord目前支持的錄音格式,可以看到目前是不支持mp3的。那這時(shí)我們想要編碼mp3的文件,就得借助lame來實(shí)現(xiàn)了。

public final class AudioEncoder { /* Do not change these values without updating their counterparts * in include/media/mediarecorder.h! */ private AudioEncoder() {} public static final int DEFAULT = 0; /** AMR (Narrowband) audio codec */ public static final int AMR_NB = 1; /** AMR (Wideband) audio codec */ public static final int AMR_WB = 2; /** AAC Low Complexity (AAC-LC) audio codec */ public static final int AAC = 3; /** High Efficiency AAC (HE-AAC) audio codec */ public static final int HE_AAC = 4; /** Enhanced Low Delay AAC (AAC-ELD) audio codec */ public static final int AAC_ELD = 5; /** Ogg Vorbis audio codec */ public static final int VORBIS = 6; /** @hide EVRC audio codec */ public static final int EVRC = 10; /** @hide QCELP audio codec */ public static final int QCELP = 11; /** @hide Linear PCM audio codec */ public static final int LPCM = 12; }三、Lame在Android應(yīng)用上如何使用

在android上集成開源的代碼,很多時(shí)候套路都差不多,就是下載源碼,編譯出相關(guān)的so庫,然后就是調(diào)用這些庫提供的方法了,當(dāng)然,調(diào)用so庫里面的方法,應(yīng)用上需要借助jni來實(shí)現(xiàn)。

這里就不介紹如何下載lame源碼和編碼so庫了。編譯lame源碼后,我們會(huì)得到一個(gè)libmp3lame.so 的庫文件,調(diào)用這個(gè)so庫里面的方法,還需要我們?nèi)?shí)現(xiàn)JNI部分的代碼。

整體的思路就是,應(yīng)用層通過調(diào)用JNI提供的native方法,然后調(diào)用到 libmp3lame.so 庫里面的方法,實(shí)現(xiàn)編碼mp3文件。

這里給出的一個(gè)例子是將pcm格式的文件編碼mp3格式的文件。

代碼git地址:github.com/yorkZJC/And… 代碼邏輯這里簡單講下:

LameEncodeJniNative.java 是本地封裝的native方法,為應(yīng)用層提供了2個(gè)方法,一個(gè)是編碼,一個(gè)是結(jié)束。這2個(gè)方法對應(yīng)c++層具體的實(shí)現(xiàn),可以看工程 cpp/目錄下文件的實(shí)現(xiàn),cpp文件里面的實(shí)現(xiàn)也比較簡單。

Android 如何采用Lame編碼器編碼mp3文件

應(yīng)用代碼調(diào)用的時(shí)候,就是傳入對應(yīng)的pcm源文件和需要生成的mp3文件路徑,還有pcm源文件的格式信息(采用率、通道數(shù)、編碼數(shù)據(jù)位數(shù))。

File pcmFile = new File(getExternalFilesDir(null), 'input.pcm'); File mp3File = new File(getExternalFilesDir(null), 'output.mp3'); mLameEncoder = new LameEncodeJniNative(); mLameEncoder.encode(pcmFile.getAbsolutePath(), mp3File.getAbsolutePath(), 44100, 2, 128);

以上就是Android 如何采用Lame編碼器編碼mp3文件的詳細(xì)內(nèi)容,更多關(guān)于Android 編碼mp3文件的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 国产在线主播 | 草久久网| 婷婷六月丁香色婷婷网 | 国产美女无遮挡软件 | 欧美视频一区二区三区 | 国产精品自拍第一页 | 一级做人爰a全过程免费视频 | 久久夜色精品国产尤物 | 成人黄色一级片 | 亚洲成人网在线 | 国产亚洲精品综合在线网址 | 亚洲第一在线 | 欧美国产永久免费看片 | 亚洲精品美女在线观看 | 黄色成人影院 | 欧美成人午夜做爰视频在线观看 | 国产91香蕉| 久久精品国产69国产精品亚洲 | 日本特黄aaaaaaa大片 | 日韩在线国产精品 | 亚洲精品亚洲人成在线播放 | 51视频在线观看免费国产 | 精品一二| 最新欧美精品一区二区三区 | 特级aa毛片在线播放 | 免费一级片在线 | 欧美在线乱妇一级毛片 | 欧美一级毛片在线播放 | 中文国产成人精品久久一区 | 麻豆传媒在线完整视频 | 久久久999久久久精品 | 亚洲精品国产高清不卡在线 | 91短视频黄 | 成人区精品一区二区不卡亚洲 | 91久久老司机福利精品网 | 国产无圣光高清一区二区 | 国产尤物福利视频一区二区 | 国产成人毛片毛片久久网 | 欧美一级特黄真人毛片 | 后式大肥臀国产在线 | 自偷自拍亚洲欧美清纯唯美 |