说,我有一个InputStream,提供audio / mpeg(或音频/ aacp) - 一个Shoutcast收音机。
有人可以给我看一个播放这样一个流的代码示例吗?
我在互联网上搜索,看起来android.media.MediaPlayer不能播放缓冲流。它只能通过HTTP URL作为DataSource播放流
是的,有可能实现自己的android.media.MediaDataSource并将其提供给MediaPlayer.setDataSource(),但是在audio / aacp的情况下编解码器could not initialize。
猜猜这可以用OpenSL ES来完成,但我还是找不到任何可以从InputStream执行解码的示例(不是来自URL),然后回放输出..
<小时/> 拜托了伙计们!
OpenSL ES
中的任何样本片段解码输入字节数组并将其发送到音频输出。请!OpenSL ES
找到的唯一一本手册是Khronos OpenSL ES™ Registry,但这根本不适合初学者阅读。我宁愿死在那里寻找一个合适的&#34;操作方法&#34;例子...... :(
答案 0 :(得分:0)
你的解决方案是这样的:
public void run() {
int buffersize = AudioRecord.getMinBufferSize(11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioTrack atrack = new AudioTrack(AudioManager.STREAM_MUSIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize, AudioTrack.MODE_STREAM);
atrack.setPlaybackRate(11025);
byte[] buffer = new byte[buffersize];
atrack.play();
while (isPlaying) {
yourStream.read(buffer, 0, buffersize);
atrack.write(buffer, 0, buffer.length);
}
}