安卓使用MediaPlayer播放RTSP无画面的解决办法

  当然,这里SurfaceView和MediaPlayer使用都正确。

 

  在实际使用中,进入界面时,有时有画面,有时没画面。查了一下代码,一直没有start(),相当于没有准备好。那么我直接start()行不行?还是没画面。

  于是加个延时,检查控制器是否已经开始播放。如果已经开始播放返回;没有的话释放之,再重新开始播放动作。问题解决。

 

  代码如下:

 

private void startPlay()

 

 

 

if (mRtsp == null || !isSurfaceReady)
{
    return;
}
//如果已播放直接返回。
if (mPlayer != null && mPlayer.isPlaying())
{
    return;
}

if (null != mPlayer)
{
    mPlayer.stop();
    mPlayer.release();
    mPlayer = null;
}

try
{
    mPlayer = new MediaPlayer();

    mPlayer.setDataSource(NVideoContext.getContext(), Uri.parse(mRtsp));
    mPlayer.setSurface(mSurfaceView.getHolder().getSurface());

    mPlayer.prepareAsync();
    mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
    {
        @Override
        public void onPrepared(MediaPlayer mp)
        {
            mPlayer.start();
        }
    });
 //消息处理直接调用startPlay。前面有播放返回代码。
mHandler.sendEmptyMessageDelayed(MESSAGE_PLAY_CHECK, 5000);
}
catch (Exception e)
{
    e.printStackTrace();
}

 

你可能感兴趣的:(Android)