当网络关闭并重新打开时,FFmpegMediaPlayer停止

时间:2017-05-18 00:49:14

标签: android ffmpeg android-mediaplayer

我目前正在与FFmpegMediaPlayer合作,以便为一个基本的音乐播放器提供一个网址。我得到了基本功能。出错,我显示错误信息,否则我播放歌曲。 我面临的问题是,一旦播放器启动,我关闭了我的wifi和手机数据,就会停止声音。一旦我将我的wifi或手机数据转回一个,我希望播放器继续,但它只是停止。我必须停下来再玩一遍才能继续。

有没有办法让FFmpegMediaPlayer继续流式传输?

这是我必须初始化播放器:

mMediaPlayer = new FFmpegMediaPlayer();
    mMediaPlayer.setOnErrorListener(this);
    mMediaPlayer.setOnPreparedListener(this);
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mMediaPlayer.setOnBufferingUpdateListener(this);
    mMediaPlayer.setOnSeekCompleteListener(this);

    try {
        Uri uri = Uri.parse(radio_url);
        mMediaPlayer.setDataSource(mMainActivity, uri);
        mMediaPlayer.prepareAsync();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

然后我有一个功能来处理单击播放/停止按钮时:

@Override
public void onPlayButtonClicked(Button button) {

    if (radioInitialized) {
        mAnalytics.onStopButtonClicked();
        mMainLayout.loading(false);
        mMediaPlayer.pause();
     button.setBackground(mMainActivity.getResources().getDrawable(R.drawable.play_button));
        radioInitialized = false;
    } else {
        mAnalytics.onPlayButtonClicked();
        mMainLayout.loading(true);
        initRadio();
        button.setBackground(mMainActivity.getResources().getDrawable(R.drawable.stop_button));
        radioInitialized = true;
    }
}

同样,基本功能有效,但我希望在重新启用wifi后继续流式传输。

1 个答案:

答案 0 :(得分:0)

找到解决方案。

我的主要目标是创建一个像收音机一样的媒体播放器。

我尝试过MediaPlayer但它有效,但它往往会经常停止。

然后我尝试了vitamio和FFmpegMediaPlayer。 Vitamio令人困惑,FFmpegMediaPlayer不支持流错误。

我目前正在使用Google的Exo Player。这里有一个非常好的教程:https://codelabs.developers.google.com/codelabs/exoplayer-intro/index.html?index=..%2F..%2Findex#0