您的位置:首页 > 其它

MediaPlayer、SurfaceView实现视频播放

2016-08-10 16:07 411 查看
一、传统实现的基本步骤

1、MediaPlayer mediaPlayer1 = new MediaPlayer();

2、SurfaceView的getHolder()函数可以获取SurfaceHolder对象,Surface
就在SurfaceHolder对象内。

Surface第一次被创建时回调surfaceCreated()方法

//设置播放时打开屏幕
m surfaceView.getHolder().setKeepScreenOn(true);


surfaceView.getHolder().addCallback(new Callback() {

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

try {

//开始播放

play();

} catch (Exception e) {

// TODO: handle exception

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

});

}

3、

private void play() {

try {

mediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);

//设置需要播放的视频 ,括号里填绝对路径或者网络url

mediaPlayer.1setDataSource(mFinalUrl);

//把视频画面输出到SurfaceView

mediaPlayer1.setDisplay(surfaceView.getHolder());

mediaPlayer1.setScreenOnWhilePlaying(true);

mediaPlayer1.prepareAsync();


//从指定位置开始播放

if(position>0){

mediaPlayer1.seekTo(position);

position=0; }

//播放

mediaPlayer1.start();

} catch (Exception e) {

// TODO: handle exception

}

}

二、封装解耦
在实际应用中将蓝色部分的代码封装成一个新的BaseMediaPlayer(公司游戏中心新封装的类叫GameVedioPlayer)该类除了封装了MediaPlayer,还实现了

SurfaceHolder.Callback接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: