我正在使用 Android 的 MediaPlayer 在我的应用程序中设置 URL 流。我尝试了几个不同的帖子来处理退出代码和错误:(1,-2147483648)。
我尝试了几种不同的流,但似乎无法让 MediaPlayer 工作。我曾考虑过使用 Google 的 ExoPlayer,但它有点复杂,我不想跳槽,以防我遗漏了什么。
媒体播放器:
private MediaPlayer player;
String url = "http://199.180.75.118:80/stream"; //temp stream
private void initializeMediaPlayer() {
player = new MediaPlayer();
player.setAudioAttributes( new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
try {
player.setDataSource(url);
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我还包括了 android 权限:
<uses-permission android:name="android.permission.INTERNET" />
我试图使用原始的流类型(但它会抛出一个弃用的警告):
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
因此,我使用了.setAudioAttributes(...)
我尝试运行prepare()
的而不是prepareAsync()
给出了问题的标题,但我仍然导致同样的错误。我调查了实际的错误定义也没有运气(Android MediaPlayer error (1, -2147483648))。我认为这不是源问题,因为我尝试了多个其他流。如果我跳过了可能导致我的错误的重要内容,请告诉我。
编辑
如果它有帮助,我一直在调查我的电话,我发现 MediaPlayer 从来没有打电话onPrepared(...)
。我检查了我一直在测试的所有媒体的内容类型,它们都是音频/MPEG 标头。所以我不明白为什么 MediaPlay 不访问 onPrepared。