在集成阿里云的点播功能时,集成他的sdk后播放视频遇到,有声音没有画面的问题!
在mPlayer = new AliVcMediaPlayer(AliVcMediaPlayerActivity.this,surfaceView),这一句代码不能直接放在oncreat()里面。
必须首先获取到surfaceView 的holder :surfaceView.getHolder(),然后添加一个回调,在回调方法surfaceCreated()中创建AliVcMediaPlayer实例。
可以完美的解决黑屏的问题!
private class SurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
//默认加载完成即播放
preparePlay();
startPlay("http://player.alicdn.com/video/aliyunmedia.mp4");
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (null != mPlayer) {
mPlayer = null;
}
}
}
/**
* 播放视频准备
*/
private void preparePlay() {
mPlayer = new AliVcMediaPlayer(this, mSurfaceView);
//开启缓存
mPlayer.setPlayingCache(true, createCacheFiles(), 60, 300);
//填充效果
mPlayer.setVideoScalingMode(MediaPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT);
//开启循环播放
mPlayer.setCirclePlay(true);
//准备完成
mPlayer.setPreparedListener(new MediaPlayer.MediaPlayerPreparedListener() {
@Override
public void onPrepared() {
Log.i("mPlayer", "setPreparedListener");
mPlayer.play();
}
});
}