2014-09-01 35 views
1

OpenSL的文檔說明了 「支持的格式包括WAV PCM,WAV alaw,WAV ulaw,MP3,Ogg Vorbis,AAC LC,HE-AACv1 aacPlus),HE-AACv2(增強型aacPlus),AMR和FLAC [只要它們受到整個平臺的支持,並且AAC格式必須位於MP4或ADTS容器內],MIDI不受支持。開源版本,並且與Android OpenSL ES的兼容性尚未得到驗證。「使用Android SDK(OpenSL)解碼ogg和其他壓縮音頻文件格式

在其他地方,在論壇上,我讀到Android上的OpenSL不支持任何壓縮格式的解​​碼。由於使用OpenSL API的解碼器的實現似乎是一項至少需要幾個小時才能實現的任務,我很想了解,如果我可以確定,一旦我爲代碼解碼完成所有必需的boiler-plate代碼我不會發現自己無法讀取任何壓縮格式,尤其是OGG。

回答

2

使用OpenSL工作解碼ogg vorbis。它甚至可以進行採樣率轉換,這很方便。雖然我發現流的末尾沒有用事件SL_PLAYEVENT_HEADATEND發信號通知。在mp3wav'解碼'的情況下,調度此事件。這不是必要的,可以通過其他方式瞭解解碼的結果。

我最終將ogg vorbis源代碼添加到我的項目中,因爲我想對解碼有更多的控制權:例如,這樣我可以預先告知解碼的剪輯有多長時間,但是我必須執行採樣率自我轉換。

+0

謝謝,你有什麼源代碼可以分享嗎? – 2014-09-10 14:39:59

+1

當然,你有錢分享嗎? B/c看起來你沒有任何技術上的困難,但是想把這個任務外包出去而不花時間......(而且我不想粗魯,我只是問......) – Tamas 2014-09-11 07:38:15

+0

我希望它是公共項目的一部分。我需要說的是,對於這樣耗時,煩人的任務,這些任務不是真正的原創編程思想,但最終可以被認爲是所有樣板代碼,我總是樂於分享。例如創建一個Gist。 – 2014-09-11 08:06:29