簡體   English   中英

如何在android中播放字節的音頻流?

[英]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

BASS_StreamCreateFile函數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM