Skip to content

Commit

Permalink
更新 Demo,支持v4协议
Browse files Browse the repository at this point in the history
  • Loading branch information
wzyzb committed Mar 13, 2020
1 parent 98d14e6 commit 0bc2484
Show file tree
Hide file tree
Showing 26 changed files with 550 additions and 267 deletions.
5 changes: 5 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions app/src/main/java/com/tencent/liteav/demo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import com.tencent.liteav.demo.common.widget.expandableadapter.BaseExpandableRecyclerViewAdapter;
import com.tencent.liteav.demo.lvb.liveplayer.LivePlayerActivity;
import com.tencent.liteav.demo.lvb.liveplayer.LivePlayerSurfaceActivity;
import com.tencent.liteav.demo.player.VodPlayerActivity;
import com.tencent.liteav.demo.player.superplayer.SuperPlayerActivity;
import com.tencent.rtmp.TXLiveBase;
Expand Down Expand Up @@ -158,6 +159,7 @@ private List<GroupBean> initGroupData() {

// 调试工具
List<ChildBean> debugChildList = new ArrayList<>();
debugChildList.add(new ChildBean("直播播放器 (Surface)", R.drawable.live, LivePlayerActivity.ACTIVITY_TYPE_LIVE_PLAY, LivePlayerSurfaceActivity.class));
debugChildList.add(new ChildBean("点播播放器", R.drawable.play, LivePlayerActivity.ACTIVITY_TYPE_VOD_PLAY, VodPlayerActivity.class));

if (debugChildList.size() != 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,53 @@


/**
* Created by hans on 2019/3/25.
*
* 使用点播SDK有以下三种方式:
* 1. 使用腾讯云FileId播放模式,仅需填写appid以及fileId即可简单进行播放。(更多高级用法,详见{@link SuperPlayerVideoId} 以及腾讯云官网文档
*
* 2. 使用传统URL模式播放,仅需填写URL即可进行播放。
*
* 3. 多码率视频播放模式。
* 超级播放器支持三种方式播放视频:
* 1. 视频 URL
* 填写视频 URL, 如需使用直播时移功能,还需填写appId
* 2. 腾讯云点播 File ID 播放
* 填写 appId 及 videoId (如果使用旧版本V2, 请填写videoIdV2)
* 3. 多码率视频播放
* 是URL播放方式扩展,可同时传入多条URL,用于进行码率切换
*/
public class SuperPlayerModel {
/** ------------------------------------------------------------------
* 公共字段
* ------------------------------------------------------------------
*/
public int appId; // 【腾讯云服务专用】appid 播放方式1必填;播放方式2、3只有需要使用腾讯云直播时移功能时候填写

public String title = ""; // 视频文件名 (用于显示在UI层)
// 播放方式1:若未指定title,则使用FileId返回的Title
// 播放方式2、3:需要指定,否则title显示为空
public int appId; // AppId 用于腾讯云点播 File ID 播放及腾讯云直播时移功能

/** ------------------------------------------------------------------
* 播放方式1: 腾讯云存储对象VideoId(FileId)播放模式 1.appId必填 2.使用V3协议注意填写Token用于播放加密视频
* 直接使用URL播放
*
* 支持 RTMP、FLV、MP4、HLS 封装格式
* 使用腾讯云直播时移功能则需要填写appId
* ------------------------------------------------------------------
*/
public SuperPlayerVideoId videoId;
public String url = ""; // 视频URL


/** ------------------------------------------------------------------
* 播放方式2: 直接使用URL播放 支持直播:RTMP、FLV封装格式 点播:MP4、Dash等常见封装格式 使用腾讯云直播时移功能则需要填写appId
* 多码率视频 URL
*
* 用于拥有多个播放地址的多清晰度视频播放
* ------------------------------------------------------------------
*/
public String url = ""; // 视频URL
public String qualityName = "原画"; // 码率名称(用于显示在UI层)
public List<SuperPlayerURL> multiURLs;

public int playDefaultIndex; // 指定多码率情况下,默认播放的连接Index


/** ------------------------------------------------------------------
* 播放方式3: 多码率URL播放 播放方式3是播放方式2的扩展,可同时传入多条URL,用于进行码率切换
* 腾讯云点播 File ID 播放参数
* ------------------------------------------------------------------
*/
public List<SuperPlayerURL> multiURLs;
public SuperPlayerVideoId videoId;

public int playDefaultIndex; // 指定多码率情况下,默认播放的连接Index
/*
* 用于兼容旧版本(V2)腾讯云点播 File ID 播放参数(即将废弃,不推荐使用)
*/
@Deprecated
public SuperPlayerVideoIdV2 videoIdV2;


public String title = ""; // 视频文件名 (用于显示在UI层);使用file id播放,若未指定title,则使用FileId返回的Title;使用url播放需要指定title,否则title显示为空

public static class SuperPlayerURL {
public SuperPlayerURL(String url, String qualityName) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.tencent.liteav.demo.play;

import android.view.View;

import java.math.BigInteger;
import java.security.MessageDigest;

Expand All @@ -14,39 +16,10 @@
*
* 2. v2需要参数 KEY+appId+fileId+t+exper+us (exper是可选的)
* 3. v3需要参数 KEY+appId+fileId+playDefinition+t+rlimit+us (rlimit是可选的)
* 3. v4需要参数 KEY+appId+fileId+pcfg+t+exper+rlimit+us (pcfg、exper、rlimit、us是可选的)
*/
public class SuperPlayerSignUtils {


public static String generateSign(String key, SuperPlayerModel model) {
if (key != null && model != null && model.videoId != null) {
// V2: https://cloud.tencent.com/document/product/266/14424#key-.E9.98.B2.E7.9B.97.E9.93.BE
// 普通防盗链签名:
// sign = md5(KEY+appId+fileId+t+us)
// 带试看的防盗链签名:
// sign = md5(KEY+appId+fileId+t+exper+us)

StringBuilder sb = new StringBuilder();

sb.append(key);
sb.append(model.appId);
sb.append(model.videoId.fileId);
if (model.videoId.timeout != null)
sb.append(model.videoId.timeout);
if (model.videoId.exper != -1)
sb.append(model.videoId.exper);
if (model.videoId.us != null)
sb.append(model.videoId.us);

String sign = sb.toString();

sign = getMD5(sign);

return sign;
}
return null;
}

private static String getMD5(String str) {
try {
// 生成一个MD5加密计算摘要
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,13 @@
*/
public class SuperPlayerVideoId {
public String fileId; // 腾讯云视频fileId

/**
* 防盗链参数 具体可参考{@link com.tencent.liteav.demo.play.SuperPlayerSignUtils}
*/
public String timeout; // 【可选】加密链接超时时间戳,转换为16进制小写字符串,腾讯云 CDN 服务器会根据该时间判断该链接是否有效。
public int exper = -1; // 【V2可选】试看时长,单位:秒。可选
public String us; // 【可选】唯一标识请求,增加链接唯一性
public String sign; // 【可选】防盗链签名
public String pSign; // v4 开启防盗链必填

@Override
public String toString() {
return "SuperPlayerVideoId{" +
", fileId='" + fileId + '\'' +
", timeout='" + timeout + '\'' +
", exper=" + exper +
", us='" + us + '\'' +
", sign='" + sign + '\'' +
", pSign='" + pSign + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.tencent.liteav.demo.play;

public class SuperPlayerVideoIdV2 {
public String fileId; // 腾讯云视频fileId

public String timeout; // 【可选】加密链接超时时间戳,转换为16进制小写字符串,腾讯云 CDN 服务器会根据该时间判断该链接是否有效。
public int exper = -1; // 【V2可选】试看时长,单位:秒。可选
public String us; // 【可选】唯一标识请求,增加链接唯一性
public String sign; // 【可选】防盗链签名

@Override
public String toString() {
return "SuperPlayerVideoId{" +
", fileId='" + fileId + '\'' +
", timeout='" + timeout + '\'' +
", exper=" + exper +
", us='" + us + '\'' +
", sign='" + sign + '\'' +
'}';
}
}
Loading

0 comments on commit 0bc2484

Please sign in to comment.