自定义流实现

时间:2016-02-13 18:17:09

标签: java android stream android-mediaplayer

我试图实现自己的流媒体版本。我在websocket上发送字节数组。收到第一条消息后,我将其写入临时消息并使用android MediaPlayer播放该文件。对于第一条消息,一切正常,我将字节数组转换为mp3并输出音频。但是,每次收到消息时,我都不确定如何继续写入文件。

一些示例代码

File test;
FileOutputStream fos;
MediaPlayer mediaPlayer;
FileInputStream MyFile;

每当有消息通过此代码运行时。

                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 个答案:

答案 0 :(得分:1)

MediaPlayer不支持您尝试做的事情(在无限增长的文件中播放音频)。相反,请考虑自己解码音频并将原始PCM数据发送到AudioTrack。这项工作要多得多,但AudioTrack是逐步播放音频数据流的最简单方法。