MediaPlayer没有播放服务器中的某些音频文件

时间:2017-12-27 13:01:00

标签: android audio android-mediaplayer

我正在尝试实施在线灵修诗篇流媒体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

然后我尝试将OnErrorListener设置为MediaPlayer,以便如果流式传输这些文件时出现错误,我可以将这些错误记录下来,因此我在mMediaPlayer.prepareAsync();之后添加了这些行,但是当我更改了Logcat中记录了MediaPlayer无法播放的其中一个没有错误的URL。

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和音频文件,但同样令人困惑的部分是,它正在播放一些保存在服务器上而不是其他文件的文件。

1 个答案:

答案 0 :(得分:0)

我认为你应该在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();