java MediaPlayer 安卓 stream radio不会立即启动或根本不会启动
我使用以下代码:
mediaPlayer.setDataSource("http://some online radio");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();
而onPrepared
方法是:
if (mediaPlayer != null) {
mediaPlayer.start();
}
一般来说,问题是:然后我运行这段代码,播放不会立即开始,而是大约10秒后有些流根本不会启动,在模拟器上它比在设备上工作得好一些,但仍然可以。这取决于具体的收音机,有些更好,有些很差
我认为事情正在准备和缓冲中。可以从这个流中创建一个InputStream
,写入一些临时文件/缓冲区,并在MediaPlayer
中读取/播放这个文件,但是如何实现它还不清楚。。请帮忙
如果你只做mp.prepare
,然后mp.start
,结果是一样的
在Chrome的PC上,我尝试使用的所有广播流立即开始播放
对不起我的英语,谢谢
# 1 楼答案
似乎音频比特率可能是这里的关键:https://stackoverflow.com/a/12850965/3454741。似乎没有简单的方法可以绕过这一点
如果流媒体根本没有启动,可能是由于某些错误,您可以使用MediaPlayer.setOnErrorListener()捕捉到这些错误
# 2 楼答案
如果有人出于同样的原因(以防万一)来到这里,解决方案就是ExoPlayer
比如:
但是你最好在这里检查一下示例的实际版本:https://github.com/google/ExoPlayer