Skip to content

Commit 0bc2484

Browse files
committed
更新 Demo,支持v4协议
1 parent 98d14e6 commit 0bc2484

26 files changed

+550
-267
lines changed

.idea/modules.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/tencent/liteav/demo/MainActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import com.tencent.liteav.demo.common.widget.expandableadapter.BaseExpandableRecyclerViewAdapter;
1818
import com.tencent.liteav.demo.lvb.liveplayer.LivePlayerActivity;
19+
import com.tencent.liteav.demo.lvb.liveplayer.LivePlayerSurfaceActivity;
1920
import com.tencent.liteav.demo.player.VodPlayerActivity;
2021
import com.tencent.liteav.demo.player.superplayer.SuperPlayerActivity;
2122
import com.tencent.rtmp.TXLiveBase;
@@ -158,6 +159,7 @@ private List<GroupBean> initGroupData() {
158159

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

163165
if (debugChildList.size() != 0) {

libsuperplayer/src/main/java/com/tencent/liteav/demo/play/SuperPlayerModel.java

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,53 @@
55

66

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

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

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

3429

3530
/** ------------------------------------------------------------------
36-
* 播放方式2: 直接使用URL播放 支持直播:RTMP、FLV封装格式 点播:MP4、Dash等常见封装格式 使用腾讯云直播时移功能则需要填写appId
31+
* 多码率视频 URL
32+
*
33+
* 用于拥有多个播放地址的多清晰度视频播放
3734
* ------------------------------------------------------------------
3835
*/
39-
public String url = ""; // 视频URL
40-
public String qualityName = "原画"; // 码率名称(用于显示在UI层)
36+
public List<SuperPlayerURL> multiURLs;
37+
38+
public int playDefaultIndex; // 指定多码率情况下,默认播放的连接Index
4139

4240

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

49-
public int playDefaultIndex; // 指定多码率情况下,默认播放的连接Index
47+
/*
48+
* 用于兼容旧版本(V2)腾讯云点播 File ID 播放参数(即将废弃,不推荐使用)
49+
*/
50+
@Deprecated
51+
public SuperPlayerVideoIdV2 videoIdV2;
52+
53+
54+
public String title = ""; // 视频文件名 (用于显示在UI层);使用file id播放,若未指定title,则使用FileId返回的Title;使用url播放需要指定title,否则title显示为空
5055

5156
public static class SuperPlayerURL {
5257
public SuperPlayerURL(String url, String qualityName) {

libsuperplayer/src/main/java/com/tencent/liteav/demo/play/SuperPlayerSignUtils.java

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.tencent.liteav.demo.play;
22

3+
import android.view.View;
4+
35
import java.math.BigInteger;
46
import java.security.MessageDigest;
57

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

20-
21-
public static String generateSign(String key, SuperPlayerModel model) {
22-
if (key != null && model != null && model.videoId != null) {
23-
// V2: https://cloud.tencent.com/document/product/266/14424#key-.E9.98.B2.E7.9B.97.E9.93.BE
24-
// 普通防盗链签名:
25-
// sign = md5(KEY+appId+fileId+t+us)
26-
// 带试看的防盗链签名:
27-
// sign = md5(KEY+appId+fileId+t+exper+us)
28-
29-
StringBuilder sb = new StringBuilder();
30-
31-
sb.append(key);
32-
sb.append(model.appId);
33-
sb.append(model.videoId.fileId);
34-
if (model.videoId.timeout != null)
35-
sb.append(model.videoId.timeout);
36-
if (model.videoId.exper != -1)
37-
sb.append(model.videoId.exper);
38-
if (model.videoId.us != null)
39-
sb.append(model.videoId.us);
40-
41-
String sign = sb.toString();
42-
43-
sign = getMD5(sign);
44-
45-
return sign;
46-
}
47-
return null;
48-
}
49-
5023
private static String getMD5(String str) {
5124
try {
5225
// 生成一个MD5加密计算摘要

libsuperplayer/src/main/java/com/tencent/liteav/demo/play/SuperPlayerVideoId.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,13 @@
77
*/
88
public class SuperPlayerVideoId {
99
public String fileId; // 腾讯云视频fileId
10-
11-
/**
12-
* 防盗链参数 具体可参考{@link com.tencent.liteav.demo.play.SuperPlayerSignUtils}
13-
*/
14-
public String timeout; // 【可选】加密链接超时时间戳,转换为16进制小写字符串,腾讯云 CDN 服务器会根据该时间判断该链接是否有效。
15-
public int exper = -1; // 【V2可选】试看时长,单位:秒。可选
16-
public String us; // 【可选】唯一标识请求,增加链接唯一性
17-
public String sign; // 【可选】防盗链签名
10+
public String pSign; // v4 开启防盗链必填
1811

1912
@Override
2013
public String toString() {
2114
return "SuperPlayerVideoId{" +
2215
", fileId='" + fileId + '\'' +
23-
", timeout='" + timeout + '\'' +
24-
", exper=" + exper +
25-
", us='" + us + '\'' +
26-
", sign='" + sign + '\'' +
16+
", pSign='" + pSign + '\'' +
2717
'}';
2818
}
2919
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.tencent.liteav.demo.play;
2+
3+
public class SuperPlayerVideoIdV2 {
4+
public String fileId; // 腾讯云视频fileId
5+
6+
public String timeout; // 【可选】加密链接超时时间戳,转换为16进制小写字符串,腾讯云 CDN 服务器会根据该时间判断该链接是否有效。
7+
public int exper = -1; // 【V2可选】试看时长,单位:秒。可选
8+
public String us; // 【可选】唯一标识请求,增加链接唯一性
9+
public String sign; // 【可选】防盗链签名
10+
11+
@Override
12+
public String toString() {
13+
return "SuperPlayerVideoId{" +
14+
", fileId='" + fileId + '\'' +
15+
", timeout='" + timeout + '\'' +
16+
", exper=" + exper +
17+
", us='" + us + '\'' +
18+
", sign='" + sign + '\'' +
19+
'}';
20+
}
21+
}

0 commit comments

Comments
 (0)