自定义流式传输
问题描述:
我试图实现我自己的流版本。我通过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是逐步播放音频数据流的最简单方法。
我给了这个尝试,我已经尝试过实施,并没有为我工作,它播放的第一个字节[],我听到了音频,然后停止,我可以采取任何示例的链接看着? – user3298823
我不能推荐一个具体的例子,因为我所写的用于AudioTrack流式处理的所有代码都是封闭源代码。但是您必须将AudioTrack设置为流模式,并且必须继续写入。我相信这里有足够的关键词来搜索一些样本。 :-) –
谢谢,我有它的工作,它读取所有的字节[] s,但只是回来静态。我会弄明白的,谢谢! – user3298823