自定义流式传输

自定义流式传输

问题描述:

我试图实现我自己的流版本。我通过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 []的文件,但似乎并没有工作。任何意见,将不胜感激。

MediaPlayer不支持您正在尝试执行的操作(播放无限期增长的文件中的音频)。相反,请自己解读音频并将原始PCM数据发送到AudioTrack。这是更多的工作,但AudioTrack是逐步播放音频数据流的最简单方法。

+0

我给了这个尝试,我已经尝试过实施,并没有为我工作,它播放的第一个字节[],我听到了音频,然后停止,我可以采取任何示例的链接看着? – user3298823

+0

我不能推荐一个具体的例子,因为我所写的用于AudioTrack流式处理的所有代码都是封闭源代码。但是您必须将AudioTrack设置为流模式,并且必须继续写入。我相信这里有足够的关键词来搜索一些样本。 :-) –

+0

谢谢,我有它的工作,它读取所有的字节[] s,但只是回来静态。我会弄明白的,谢谢! – user3298823