首页 文章

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

提问于
浏览
0

我正在尝试实现在线灵修诗篇流媒体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(); 之后添加了这些行,但是当我将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和音频文件但是主要令人困惑的部分是,它正在播放一些保存在服务器上而不是其他文件的文件 .

1 回答

  • 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();
    

相关问题