超简单的阿里播放器:一般的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; }