Android 快速集成

观看准备

  1. 创建直播间 获取roomId

    可以通过 【测试工具】 或 【API】 获得

  2. 获取直播间包含看直播权限的access_token

    可以通过 【测试工具】 或 【API】 获得

时序图

注:已知直播间ID的情况下虚线框部分无需请求。

对接流程

VHVideoPlayerView 获取View

通过FindViewById 获取View的实例,此View重要用于看直播,拉流的数据会直接渲染到此View上,lss服务内部实现的一个普通渲染方案。

<com.vhall.lss.play.impl.VHVideoPlayerView
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

构造VHLivePlayer

VHLivePlayer采用builder模式构造,也是观看直播的核心方法,更多构造参数,参见builder类具体内容

/**
 * 构造VHLivePlayer
 */
mPlayer = new VHLivePlayer.Builder()
	.videoPlayer(mVideoPlayer) // 播放视频View
	.listener(new MyListener()) // 添加监听,具体监听事件参考本文的事件监听
	.build();

VHLivePlayer的 Builder

IVHVideoPlayer/IVHAudioPlayer为视频、音频播放接口,用户可实现此接口来自定义视频渲染和音频播放。

Builder 描述
videoPlayer 添加视频播放器
aideoPlayer 添加音频播放器
listener 添加监听
reconnectTimes 重连次数
connectTimeout 超时时间
bufferSeconds 缓冲时间

开始观看

/**
 * 开始观看,传递观看准备中配置的roomId (房间ID)和AccessToken;
 * 次方法属于 VHLivePlayer
 * @param String roomId ; // 房间ID  通过 API 调用
 * @param String accessToken; // 发起的Token  通过 API 调用
 */
public void start(String roomId  , String accessToken);

设置观看显示模式

调整观看的预览模式

/**
 * 设置预览模式,具体查看表格
 * 次方法属于 VHLivePlayer
 * @param int mode 预览的类型
 */
public void setDrawMode(int mode);
显示模式 参数
VHLivePushFormat.DRAW_MODE_ASPECTFILL 将图像等比例铺满整个屏幕,多余部分裁剪掉,此模式下画面不会留黑边,但可能因为部分区域被裁剪而显示不全
VHLivePushFormat.DRAW_MODE_ASPECTFIT 将图像等比例缩放,适配最长边,缩放后的宽和高都不会超过显示区域,居中显示,画面可能会留有黑边
VHLivePushFormat.DRAW_MODE_NONE 默认

设置观看清晰度

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

/**
 * 在设置清晰度时,需要先获取当前的视频可用的分辨率,确认可用的时在调用。
 * 次方法属于 VHLivePlayer
 * @param int dpi 定义的清晰度
 */
public void.setDPI(dpi);
清晰度 描述
IVHLivePlayer.DPI_SD 低清
IVHLivePlayer.DPI_HD 高清
IVHLivePlayer.DPI_XHD 超清
IVHLivePlayer.DPI_AUDIO 纯音频
IVHLivePlayer.DPI_SAME 原画

暂停观看/ 恢复观看

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

/**
 * 暂停观看/ 恢复观看
 * 次方法属于 VHLivePlayer
 */
public void pause();
public void resume();

结束观看

停止拉流,此时调用Stop()方法,不在继续拉流,播放器的实例还在,

/**
 * 停止拉流
 * 次方法属于 VHLivePlayer
 */
public void stop();

销毁

当调用release() 方法时,视频播放器和音频播放器被释放, 如果需要再次使用请重新初始化

/**
 * 退出播放并释放相关资源。
 * 次方法属于 VHLivePlayer
 */
public void release();