快速开始

本文介绍如何用Android播放器SDK快速实现视频起播。

前提条件

已完成Android播放器的SDK集成

开源示例工程

详细代码示例可参考API-Example视频基础播放演示(BasicPlayback)模块,该工程是基于Java的阿里云播放器SDK Android示例工程,能够帮助开发者快速掌握SDK核心功能集成。

操作步骤

步骤一:创建播放器

通过AliPlayerFactory类创建AliPlayer播放器。

// 创建播放器实例
AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
// 传入traceid
// 可选:推荐使用`播放器单点追查`功能,当使用阿里云播放器 SDK 播放视频发生异常时,可借助单点追查功能针对具体某个用户或某次播放会话的异常播放行为进行全链路追踪,以便您能快速诊断问题原因,可有效改善播放体验治理效率。
// traceId 值由您自行定义,需为您的用户或用户设备的唯一标识符,例如传入您业务的 userid 或者 IMEI、IDFA 等您业务用户的设备 ID。
mAliPlayer.setTraceId("traceId");
说明

播放器提供的播放质量监控(可查看播放器整体播放质量相关数据)、单点追查(可定位到具体的用户或设备,分析其播放行为,快速定位播放异常等问题)及视频播放统计功能都依赖埋点日志上报功能而实现。

在创建播放器时,根据setTraceId参数的设置不同,其后续可实现的功能不同,具体如下:

  • setTraceId参数不传(默认):埋点日志上报功能开启,后续可以使用播放质量监控和视频播放统计功能,无法使用单点追查功能。

  • setTraceId参数传入traceid:traceid的值由您自行定义,需为您的用户或用户设备的唯一标识符,例如传入您业务的userid或者IMEI、IDFA等您业务用户的设备ID。传入traceid后,埋点日志上报功能开启,后续可以使用播放质量监控、单点追查和视频播放统计功能。

  • setTraceId参数设置为DisableAnalytics:关闭埋点日志上报,后续无法使用播放质量监控、单点追查和视频播放统计功能。

步骤二:设置显示视图

播放器支持AliDisplayView(推荐)、SurfaceViewTextureView,任选其中一种即可。

  1. 在 XML 文件中声明视图。

    AliDisplayView(推荐)

    <!-- 播放器渲染视图 -->
    <com.aliyun.player.videoview.AliDisplayView
        android:id="@+id/ali_display_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />

    SurfaceView

    <!-- 播放器渲染视图 -->
    <SurfaceView
        android:id="@+id/surface_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />

    TextureView

    <!-- 播放器渲染视图 -->
    <TextureView
        android:id="@+id/texture_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />
  2. 设置显示视图。

    AliDisplayView(推荐)

    调用播放器的setDisplayView接口,绑定播放器视图。

    AliDisplayView mAliDisplayView = findViewById(R.id.display_view);
    // 可以通过 setPreferDisplayView() 设置播放视图类型
    mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView);
    mAliPlayer.setDisplayView(mAliDisplayView);

    SurfaceView

    调用播放器的setSurface接口,绑定播放器视图。

    SurfaceView mSurfaceView = findViewById(R.id.surface_view);
    mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(@NonNull SurfaceHolder holder) {
            mAliPlayer.setSurface(holder.getSurface());
        }
    
        @Override
        public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
            mAliPlayer.surfaceChanged();
        }
    
        @Override
        public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
            mAliPlayer.setSurface(null)
        }
    });

    TextureView

    调用播放器的setSurface接口,绑定播放器视图。

    TextureView mTextureView = findViewById(R.id.texture_view);
    mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
        @Override
        public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
            mAliPlayer.setSurface(new Surface(surface));
        }
    
        @Override
        public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) {
            mAliPlayer.surfaceChanged();
        }
    
        @Override
        public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {
            mAliPlayer.setSurface(null);
            return true;
        }
    
        @Override
        public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {
    
        }
    });

步骤三:设置播放源

VidAuth播放(推荐)

VidAuth vidAuth = new VidAuth();
vidAuth.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
vidAuth.setRegion("接入地域");// 5.5.5.0及之后版本播放器SDK,本参数已弃用,无需设置region,播放器会自动解析region;5.5.5.0之前版本播放器SDK,本参数必选,点播服务的接入地域,默认为cn-shanghai。
// vidAuth.setAuthTimeout(3600);// 播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
mAliPlayer.setDataSource(vidAuth);

VidSts播放

VidSts vidSts = new VidSts();
vidSts.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
vidSts.setSecurityToken("<yourSecurityToken>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
vidSts.setRegion("接入地域");// 必选参数,点播服务的接入地域,默认为cn-shanghai。
mAliPlayer.setDataSource(vidSts);

UrlSource播放

// 创建播放源对象并设置播放地址
UrlSource urlSource = new UrlSource();
// 必选参数,播放地址,可以是第三方点播地址,或阿里云视频点播服务中的播放地址,也可以是本地视频地址。
urlSource.setUri("播放地址");
mAliPlayer.setDataSource(urlSource);
说明

更多设置播放源方法,请参见基础功能

步骤四:开始播放

// 准备播放
mAliPlayer.prepare();
// 开始播放
mAliPlayer.start();

步骤五:结束播放

// 停止播放
mAliPlayer.stop();
// 销毁播放器
mAliPlayer.release();
// 清空引用,避免内存泄漏
mAliPlayer = null;

相关文档

有关更多播放器基础功能(如播放控制、事件监听等),请参见基础功能