2014-04-09 52 views
0

我想從數據庫播放wav文件。我用php文件恢復blob文件。 此代碼與視頻文件的工作,如果我們用DataInputStream所取代的inputStream:如何從數據庫播放音樂文件J2m?

公共無效playAudio(){

try { 
     ContentConnection connection = (ContentConnection)Connector.open("http://localhost/P/getXmlMusic.php"); 
     InputStream iStrm = connection.openInputStream();   

     player = Manager.createPlayer(iStrm,"audio/x-wav"); 
     player.addPlayerListener(this); 
     player.setLoopCount(4); 
     player.prefetch(); 
     player.realize(); 
     player.start(); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
} 

錯誤:無法實現播放器:畸形波傳媒:預計 'RIFF'

注意:我可以在本地播放同一個文件。因此該文件是okey!

+0

您是否記得在PHP文件中添加一個'header()'? –

回答

0

有效的WAV文件should be started with "RIFF" string

預計'RIFF'表示在WAV文件的開頭找不到RIFF字符串。所以似乎從服務器檢索到的流不是有效的WAV文件。

我建議你嘗試從你的設備(本地)播放原始的WAV文件。 使用FileConnection API稍微更改一下代碼以訪問WAV,或者將其直接嵌入到jar中,然後使用getResourceAsStream進行讀取。

如果仍然存在相同的錯誤,那麼WAV文件無效/不標準,並且設備中的Java API將無法播放它。

如果錯誤消失了,那麼錯誤在服務器端代碼中。確保您已正確執行所有操作:使用wav文件填充數據庫,從數據庫中讀取blob,並將其轉發給客戶端。