android项目接入阿里视频播放实例详解

超简单的阿里播放器:一般的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;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值