1 概念说明

点播的视频源是存储在微吼云的一个视频文件,只要视频未被移除,就可以随时播放, 播放中您可以通过进度条控制播放位置。

2 接入准备

2.1 成为开发者

申请开通微吼云账号,提供用户资料,微吼服务人员在后台为用户开通平台账号,账号开通后,用户即可登录,成为一名开发者。

2.2 创建应用

登录微吼云平台后,控制台选择应用管理,进入应用管理页面点击创建应用,根据页面提示信息,完成应用创建。应用创建完成,您可以在控制台界面找到在应用管理界面您可以找到 AppID。

2.3 添加服务

应用创建完成后,选择添加服务,添加点播服务,添加成功后可在点播服务下点播管理的【点播配置】页面查看AppID

2.4 SDK下载

SDK下载

3 工程配置

3.1 开发环境

  • Android SDK Tools: android-sdk_22.0.|+
  • minSdkVersion: 16
  • targetSdkVersion: 22
  • Android Studio

3.2 系统要求

  • SDK 支持 在 Android 4.1(API 16)及以上系统上运行,但只有 ( Android 4.3) API 18 以上的系统才能开启硬件编码

3.3 接入流程

  • 新建gradle工程
  • 复制vhallframework1.0.jar到工程lab目录下
  • 复制jnilibs文件夹内容到appjni目录下

3.4 库简介

  • vhallframework1.0.jar:vhallsdk基础包,用户sdk基础通迅、全局配置、日志管理、权限控制等。
  • socket.io 一款公共I/O库,基础通讯功能使用,目前使用截止文档编写之日最新稳定版
   compile("io.socket:socket.io-client:0.9.0") {
        exclude group: 'org.json', module: 'json'
    }

3.5 配置权限

<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

3.6 接口简介

3.6.1 VhallSDK初始化

appid为注册应用时配置的应用ID 初始化操作为SDK的入口,一切SDK功能都在初始化成功后才能使用,建议在应用application启动时调用

VhallSDK.getInstance().init(Context context, String appid);

3.6.2 SDK信息配置

1、配置用户ID

用户ID为客户平台用户唯一标识,建议在用户登录之后配置

VhallSDK.getInstance().setUserId(String userid);

2、配置日志显示

设置SDK日志显示(警告和错误级别日志必打印,此开关控制debug/info/verbose级别日志

VhallSDK.getInstance().setLogEnable(boolean enable);

3.6.3 获取SDK状态

SDK是否初始化成功并处于可用状态,初始化操作会校验appid对应当前包名和签名,请确保配置正确

VhallSDK.getInstance().isEnable();

3.6.4 加入频道

加入频道并接收频道信息,channelid表示当前频道号,如果是lss服务,房间号即为频道号

VhallSDK.getInstance().join(String channelid,Callback callback);

3.6.5 离开频道

VhallSDK.getInstance().leave(String channelid);

4 功能使用

4.1 获取recordID、access_token

获取recordIDaccess_token

4.2 创建 VHVodPlayer

VHVodPlayer 是SDK中负责点播的模块,需要传入上下文,和视频渲染的View,也就是播放画面的View,SDK使用的是系统自带的SurfaceView,将创建的Surface的实例传入VHVodPlayer即可创建。

  • Context 传入上下文
  • SurfaceView 传入渲染的View
  • addListener 添加监听
 mPlayer = new VHVodPlayer(this, mSurfaceView);
 mPlayer.addListener(new MyPlayer());

4.3 VHDocument

4.3.1 创建 VHDocumentView 文档

如果当前的视频文件存在文档信息, 在观看点播的过程中是可以和文档一起观看的,使用SDK中提供的VHDocumentView View 控件。 通过FindById获取View的实例。

 <com.vhall.ops.VHDocumentView
        android:id="@+id/doc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

4.3.2 创建 VHDocument 对象

将4.3.1创建的View 设置进VHDocument,用于文档的显示。

  • recordId 点播id 可以通过调用 api 创建 (这里的recordId 必须和Start发起的recordId 一致)
 mDoc = new VHDocument(recordId);
        mDoc.setDocumentView(mDocView);
        mDoc.join();

4.4 开始观看

  • recordId 点播id 可以通过调用 api 创建
  • accessToken 可以通过调用 api 获得
 void start(String recordId,String accessToken);

4.5 设置观看清晰度

从 IVHLivePlayer.EVENT_DPI_LIST 获取当前地址可用的分辨率,确定可用的情况下在切换

清晰度 描述
IVHLivePlayer.DPI_SD 低清
IVHLivePlayer.DPI_HD 高清
IVHLivePlayer.DPI_XHD 超清
IVHLivePlayer.DPI_AUDIO 纯音频
IVHLivePlayer.DPI_SAME 原画
 void.setDPI(dpi);

4.6 暂停观看/ 恢复观看

停止拉流,而云端的视频源还在不断地更新着 , 当重新恢复时,会从最新的时间点播放

 void pause();
 void resume();

4.7 控制播放相关API

 long getDuration();  // 获取观看时长 (毫秒)
 
 long getPosition();  // 获取当前进度 (毫秒)
 
 void seek(long position); // Seek 操作

4.8 结束观看

 void stop();

4.9 销毁

销毁播放器的实例

 void release();

5 事件监听

事件监听 描述
VHVodPlayer.EVENT_STATUS_STARTING 正在运行
VHVodPlayer.EVENT_STATUS_STARTED 开始播放
VHVodPlayer.EVENT_STATUS_STOPED 停止播放
VHVodPlayer.EVENT_STATUS_END 播放结束
VHVodPlayer.EVENT_VIDEO_SIZE_CHANGED 视频的宽高发生改变
IVHLivePlayer.EVENT_DPI_LIST 可以的清晰度
IVHLivePlayer.EVENT_DPI_CHANGED 清晰度发生改变