[英]How to play an audio stream of bytes in android?
我正在開發一個能播放mp3文件的Android應用程序。 但是mp3文件是在SD卡或sqlite上加密的。 無論哪種方式,在解密之后,我都會有一個字節流。 我怎么玩他們? MediaPlayer不將輸入流作為參數,因此我無法考慮這一點。
我認為你需要將流存儲到文件系統; 然后你可以嘗試使用MediaPlayer的 setDataSource
方法
FileInputStream rawmp3file= new FileInputStream(yourByteArrayAsMp3File);
mediaPlayer.setDataSource(rawmp3file.getFD());
如果您可以切換到PCM音頻源,請查看AudioTrack類。
AudioTrack類為Java應用程序管理和播放單個音頻資源。 它允許將PCM音頻緩沖器流式傳輸到音頻硬件以進行回放。 這是通過使用write(byte [],int,int)和write(short [],int,int)方法之一將數據“推送”到AudioTrack對象來實現的。
這並不容易。 我之前在黑莓手機上做過這樣的事情,所以我敢打賭它在Android上也是可行的。
如果我是你,我會為自定義的“encryptedmp3:”協議注冊一個新的提供者。 然后我會在MediaPlayer的數據源中指定它:
mediaplayer.setDataSource(this, URI.parse("encryptedmp3://....yourfile"));
我不確定如何在Android上創建新的協議處理程序。
我希望這有點幫助。
靈光
看看BASS圖書館 (免費用於非商業用途)。
以下是Android的鏈接: http : //www.un4seen.com/forum/? topic = 13225.0
HSTREAM BASS_StreamCreateFile(
BOOL mem,
void *file,
QWORD offset,
QWORD length,
DWORD flags
);
參數:
mem TRUE = stream the file from memory.
file Filename (mem = FALSE) or a memory location (mem = TRUE).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.