2016-02-13 132 views
0

我試圖實現我自己的流版本。我通過websocket發送字節數組。一旦我收到第一條消息,我將它寫入臨時文件並使用Android的MediaPlayer播放該文件。對於第一條消息一切正常,我把字節數組轉換成MP3和音頻出來。但是我不確定每次消息傳遞時如何繼續寫入文件。自定義流式傳輸

一些示例代碼

每次通過這個代碼被運行的消息來了。

   try { 
        if (fos == null) { 
         test = File.createTempFile("TCL", "mp3", getCacheDir()); 
         fos = new FileOutputStream(test); 
         fos.write(bytearray); 

         mediaPlayer = new MediaPlayer(); 
         MyFile = new FileInputStream(test); 
         mediaPlayer.setDataSource(MyFile.getFD()); 
         mediaPlayer.prepare(); 
         if(!mediaPlayer.isPlaying()){ 
          mediaPlayer.start(); 
         } 

        }else{ 
         fos.write(bytearray); 

        } 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

我想我可以繼續寫入傳入byte []的文件,但似乎並沒有工作。任何意見,將不勝感激。

回答

1

MediaPlayer不支持您正在嘗試執行的操作(播放無限期增長的文件中的音頻)。相反,請自己解讀音頻並將原始PCM數據發送到AudioTrack。這是更多的工作,但AudioTrack是逐步播放音頻數據流的最簡單方法。

+0

我給了這個嘗試,我已經嘗試過實施,並沒有爲我工作,它播放的第一個字節[],我聽到了音頻,然後停止,我可以採取任何示例的鏈接看着? – user3298823

+0

我不能推薦一個具體的例子,因爲我所寫的用於AudioTrack流式處理的所有代碼都是封閉源代碼。但是您必須將AudioTrack設置爲流模式,並且必須繼續寫入。我相信這裏有足夠的關鍵詞來搜索一些樣本。 :-) –

+0

謝謝,我有它的工作,它讀取所有的字節[] s,但只是回來靜態。我會弄明白的,謝謝! – user3298823