我正在尝试实现在线灵修赞美诗流Android应用程序。我正在尝试使用Android SDK框架提供的MediaPlayer
类直接从网站服务器流式传输这些音频文件。
这是我的MediaPlaybackUtility.java的代码
public class MediaPlaybackUtility {
static boolean isMediaPlaying = false;
static MediaPlayer mMediaPlayer = new MediaPlayer();
static void playPauseBhajan(String fileURL) {
if(!mMediaPlayer.isPlaying()) {
try {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(ONLINE_AUDIO_URL);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
isMediaPlaying = true;
}
});
} catch (IOException e) {
// TODO: handle exception
}
} else {
mMediaPlayer.pause();
isMediaPlaying = false;
}
}
static void stopBhajan() {
mMediaPlayer.stop();
isMediaPlaying = false;
}
}
我在ONLINE_AUDIO_URL的位置输入了保存在服务器上的音频文件的URL,但是在使用
MediaPlayer
类时,我有一些奇怪的经历。 MediaPlayer类正在播放某些文件,而没有播放其他文件,我无法理解问题出在哪里。以下是上述代码正在播放的音频文件的链接,没有任何错误:
1. testsong_20sec.mp3
2. TheRadiance.m4a
3. WaitingfortheEnd.m4a
以下是MediaPlayer无法播放的链接:
1. ShapeofYou.mp3
2. AreyDwalPalon.mp3
3. KrishnaTheme.mp3
4. BataoKahaMilegaShyam.mp3
然后,我尝试为MediaPlayer设置一个OnErrorListener,以便在流传输这些文件时出现一些错误,我可以将这些错误注销,因此我在
mMediaPlayer.prepareAsync();
之后添加了这些行,但是当我将URL更改为MediaPlayer无法播放,没有错误记录在Logcat中。mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("MEDIAPLAYER", "Can't play media.");
return false;
}
});
然后像这些一样,将这些MP3文件转换为M4A格式
AreyDwarPalonm4a.m4a,但还是没有运气,MediaPlayer仍未从服务器播放此文件。
我也在网上和各处搜索过,但找不到与我的特定问题相关的任何内容。在我第一次使用MediaPlayer和音频文件时,也许我在这里忽略了一些基本概念,但主要的混淆部分是,它正在播放服务器上保存的一些文件,而不是其他文件。
最佳答案
我认为您应该在mMediaPlayer.prepareAsync()之类的之前添加此侦听器
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("MEDIAPLAYER", "Can't play media.");
return false;
}
});
mMediaPlayer.prepareAsync();
关于android - MediaPlayer无法播放服务器中的某些音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47992667/