国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

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

這篇文章會基于下面3個問題來展開講解。

1、什么是Lame?

2、為什么采用Lame?

3、Lame在Android應用上如何使用?

一、什么是Lame

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

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

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

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

二、為什么要采用Lame

在Android上開發過錄音功能的同學應該知道,在Android上要實現錄音功能,有2種方式。一種是采用AudioRecord的方式,AudioRecord錄制的直接是原始的pcm數據,另一種方式就是采用MediaRecord,可以錄制類似amr、aac格式的文件。

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

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應用上如何使用

在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文件里面的實現也比較簡單。

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

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

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文件的詳細內容,更多關于Android 編碼mp3文件的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 欧美三级在线观看不卡视频 | 精品一区二区三区高清免费不卡 | 午夜毛片视频高清不卡免费 | 欧美一级毛片俄罗斯 | 久久精品大片 | 无遮挡一级毛片私人影院 | 久久亚洲国产的中文 | 美国大毛片 | 久久精品视频日本 | 久久厕所精品国产精品亚洲 | 亚洲综合色一区二区三区小说 | wwww.黄| 日韩中文字 | 欧美精品videosbestsex另类 | 2019在线亚洲成年视频网站 | 色多多最新地址福利地址 | 亚洲国产成人精品久久 | 日韩欧美精品在线观看 | 精品午夜久久网成年网 | 伊人国产在线视频 | 成人一区二区免费中文字幕 | 性做久久久久免费看 | 草草影院在线播放 | 在线视免费频观看韩国aaa | 亚洲国产精品久久久天堂 | 国产高清视频在线观看 | 99久久精品国产免费 | 亚洲精品一区二区中文 | 黄色成人毛片 | 日本韩国一区二区三区 | 精品国产三级a∨在线 | 色成人亚洲 | 黄人成a动漫片免费网站 | 农村寡妇特一级毛片 | 热热涩热热狠狠色香蕉综合 | 欧美日韩视频一区三区二区 | 97一级毛片全部免费播放 | 在线观看免费av网站 | xxxww在线播放| 三级精品在线观看 | 欧美一级aa天码毛片 |