我目前正在開發一款讓用戶選擇MP3音頻文件的應用程序。該文件然後由我的應用程序處理。如何在應用內解碼Android中的MP3?
對於此處理,應用程序需要解碼音頻文件以獲取原始PCM輸出。
爲了解碼MP3,我有兩個選擇:
- 使用Android系統的解碼MP3,並獲得PCM數據。
- 在手機上自己解碼MP3,無需支付MP3授權費用。
我的問題是#1在技術上是否可行?而對於#2,手機上的MP3許可證是否也覆蓋了一個應用程序?
我目前正在開發一款讓用戶選擇MP3音頻文件的應用程序。該文件然後由我的應用程序處理。如何在應用內解碼Android中的MP3?
對於此處理,應用程序需要解碼音頻文件以獲取原始PCM輸出。
爲了解碼MP3,我有兩個選擇:
我的問題是#1在技術上是否可行?而對於#2,手機上的MP3許可證是否也覆蓋了一個應用程序?
據我所知,沒有Android提供的MP3解碼方式。
我以前用過JLayer,可以推薦用於MP3處理。將NDK與C++庫一起使用可能會更快,但如果您希望保留Java,那就是我所用的。它仍然比實時更快,大約需要30秒才能解碼平均比特率爲3分鐘的MP3中的所有幀。這是Galaxy S(1GHz),所以任何新手機都更快。
就許可證而言,我無法幫到你。 JLayer本身就是LGPL,但MP3授權的世界比用過的機油油膩得多。經過幾天尋找具體的答案,我剛剛放棄,並做到了。整個世界似乎對誰甚至持有執照有分歧。
選項1是絕對不可能的(除非您想要定位ICS +設備並且願意使用OpenSL編寫原生C代碼來解碼MP3)。 jLayer的Geobits推薦是一個很好的建議。大多數情況下,處理jLayer是一件輕而易舉的事情。這裏有一篇很好的博客文章,將幫助:http://mindtherobot.com/blog/624/android-audio-play-an-mp3-file-on-an-audiotrack/
Android系統現在可以解碼mp3文件,請參閱here它描述了Android平臺提供的媒體編解碼器,容器和網絡協議支持。
MedieCodec是一個非常強大的框架來編碼和解碼媒體文件。
鼓勵連接到外部資源,但請在鏈接上添加上下文,以便您的同行用戶瞭解它是什麼以及它爲什麼在那裏。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。請參閱[如何回答](https://stackoverflow.com/help/how-to-answer) – SilverNak