超简单的阿里播放器:一般的MP4文件也可是使用哦~
1、先添加依赖:implementation ‘com.aliyun.dpa:oss-android-sdk:+’
2、libs里把jar和aar包加全
3、接下来就是代码部分了,我们要播放的直播地址是前期推流的时候申请好的,推流地址和播放地址一样使用push和pull区分,例如:
4、新建播放activity,其中布局文件使用:
<SurfaceView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
5、activity代码实现
(1)初始化
private SurfaceHolder surfaceHolder;
surfaceHolder = mSurfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceCallback());
/**
* SurfaceCallback
*
*/
private class SurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
startGetLiveDetail(0);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (null != mPlayer) {
mPlayer = null;
}
}
}
(2)播放准备
/**
* 播放视频准备
*
*/
private void preparePlay() {
mPlayer = new AliVcMediaPlayer(this, mSurfaceView);
//填充效
mPlayer.setVideoScalingMode(MediaPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
// //开启循环播放
// mPlayer.setCirclePlay(false);
startPlay(playerUrl);
// startPlay(DEFAULT_URL);
}
(3)播放视频
/**
* 播放视频
*
* @param videoUrl
*/
private void startPlay(String videoUrl) {
if (mPlayer == null) {
preparePlay();
} else {
//设置缺省编码类型:0表示硬解;1表示软解;
//如果缺省为硬解,在使用硬解时如果解码失败,会尝试使用软解
//如果缺省为软解,则一直使用软解,软解较为耗电,建议移动设备尽量使用硬解
// mPlayer.setDefaultDecoder(0);
//如果从历史点开始播放
//mPlayer.seekTo(position);
//准备开始播放
// Log.e("startPlayer==", "到了");
mPlayer.prepareAndPlay(videoUrl);
mPlayer.play();
mPlayer.setFrameInfoListener(new MediaPlayer.MediaPlayerFrameInfoListener() {
@Override
public void onFrameInfoListener() {
WaitDialog.dismiss();
// Log.e("onFrameInfoListener===", "首帧画面出现");
}
});
mPlayer.setErrorListener(new MediaPlayer.MediaPlayerErrorListener() {
@Override
public void onError(int i, String s) {
// Log.e("layerErrorListener===", "播放异常");
}
});
}
}
(4)最后记得在onDestroy时销毁它,防止资源异常
@Override
protected void onDestroy() {
super.onDestroy();
if (mPlayer != null) {
mPlayer.pause();
mPlayer.destroy();
mPlayer = null;
// Log.e("onDestroy===", "onDestroy");
}
if (mSurfaceView != null)
mSurfaceView = null;
}