package com.tencent.ugcupload.demo.videoupload.impl;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import com.tencent.cos.xml.CosXmlService;
import com.tencent.cos.xml.CosXmlServiceConfig;
import com.tencent.cos.xml.exception.CosXmlClientException;
import com.tencent.cos.xml.exception.CosXmlServiceException;
import com.tencent.cos.xml.listener.CosXmlProgressListener;
import com.tencent.cos.xml.listener.CosXmlResultListener;
import com.tencent.cos.xml.model.CosXmlRequest;
import com.tencent.cos.xml.model.CosXmlResult;
import com.tencent.cos.xml.model.object.InitMultipartUploadRequest;
import com.tencent.cos.xml.model.object.InitMultipartUploadResult;
import com.tencent.cos.xml.model.object.PutObjectRequest;
import com.tencent.cos.xml.transfer.COSXMLUploadTask;
import com.tencent.cos.xml.transfer.TransferConfig;
import com.tencent.cos.xml.transfer.TransferManager;
import com.tencent.cos.xml.transfer.TransferState;
import com.tencent.cos.xml.transfer.TransferStateListener;
import com.tencent.ugcupload.demo.videoupload.TXUGCPublishTypeDef;
import com.tencent.ugcupload.demo.videoupload.impl.compute.TXHttpTaskMetrics;
import com.tencent.ugcupload.demo.videoupload.impl.compute.TXOnGetHttpTaskMetrics;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* 视频上传客户端
*/
public class TVCClient {
private final static String TAG = "TVC-Client";
private Context context;
private Handler mainHandler;
private boolean busyFlag = false;
private boolean cancleFlag = false;
private TVCUploadInfo uploadInfo;
private UGCClient ugcClient;
private TVCUploadListener tvcListener;
private int cosAppId; //点播上传用到的COS appid
private int userAppId; //客户自己的appid,数据上报需要
private String uploadRegion = "";
private String cosBucket;
private String cosTmpSecretId = "";
private String cosTmpSecretKey = "";
private String cosToken = "";
private long cosExpiredTime;
private long localTimeAdvance = 0; //本地时间相对unix时间戳提前间隔
private String cosVideoPath;
private String videoFileId;
private String cosCoverPath;
private boolean isOpenCosAcc = false; //是否使用cos动态加速
private String cosAccDomain = ""; //动态加速域名
private String cosHost = "";
private String domain;
private String cosIP = "";
private String vodSessionKey = null;
private long reqTime = 0; //各阶段开始请求时间
private long initReqTime = 0; //上传请求时间,用于拼接reqKey。串联请求
private String customKey = ""; //用于数据上报
private CosXmlService mCosXmlService;
private COSXMLUploadTask mCOSXMLUploadTask;
private TransferConfig mTransferConfig;
private TransferManager mTransferManager;
// 断点重传session本地缓存
// 以文件路径作为key值得,存储的内容是<session, uploadId, fileLastModify, expiredTime>
private static final String LOCALFILENAME = "TVCSession";
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mShareEditor;
private String uploadId = null;
private long fileLastModTime = 0; //视频文件最后修改时间
private long coverFileLastModTime = 0; //封面文件最后修改时间
private boolean enableResume = true;
private boolean enableHttps = false;
private UGCReport.ReportInfo reportInfo;
private static final int VIRTUAL_TOTAL_PERCENT = 10; //前后的虚拟进度占的百分比
private TimerTask virtualProgress = null; //虚拟进度任务
private Timer mTimer; //定时器
private int virtualPercent = 0; //虚拟进度
private boolean realProgressFired = false;
private int vodCmdRequestCount = 0; //vod信令重试次数
private String mainVodServerErrMsg; //主域名请求失败的msg,用于备份域名都请求失败后,带回上报。
/**
* 初始化上传实例
*
* @param signature 签名
* @param iTimeOut 超时时间
*/
public TVCClient(Context context, String customKey, String signature, boolean enableResume, boolean enableHttps,
int iTimeOut) {
this.context = context.getApplicationContext();
ugcClient = UGCClient.getInstance(signature, iTimeOut);
mainHandler = new Handler(context.getMainLooper());
mSharedPreferences = context.getSharedPreferences(LOCALFILENAME, Activity.MODE_PRIVATE);
mShareEditor = mSharedPreferences.edit();
this.enableResume = enableResume;
this.enableHttps = enableHttps;
this.customKey = customKey;
reportInfo = new UGCReport.ReportInfo();
clearLocalCache();
}
/**
* 初始化上传实例
*
* @param ugcSignature 签名
*/
public TVCClient(Context context, String customKey, String ugcSignature, boolean resumeUpload, boolean enableHttps) {
this(context, customKey, ugcSignature, resumeUpload, enableHttps, 8);
}
// 清理一下本地缓存,过期的删掉
private void clearLocalCache() {
if (mSharedPreferences != null) {
try {
Map<String, ?> allContent = mSharedPreferences.getAll();
//注意遍历map的方法
for (Map.Entry<String, ?> entry : allContent.entrySet()) {
JSONObject json = new JSONObject((String) entry.getValue());
long expiredTime = json.optLong("expiredTime", 0);
// 过期了清空key
if (expiredTime < System.currentTimeMillis() / 1000) {
mShareEditor.remove(entry.getKey());
mShareEditor.commit();
}
}
} catc
没有合适的资源?快使用搜索试试~ 我知道了~
适用于 Flutter 的腾讯云点播上传 SDK.rar

共1143个文件
h:994个
png:23个
java:23个

需积分: 5 1 下载量 57 浏览量
2023-06-09
21:57:59
上传
评论
收藏 23.62MB RAR 举报
温馨提示
通过本文您可以学会 如何集成腾讯云视立方 Flutter 播放器 SDK。 如何使用播放器 SDK 进行点播播放。 如何使用播放器 SDK 底层能力实现更多功能。 基础知识 本文主要介绍视频云 SDK 的点播播放功能,在此之前,先了解如下一些基本知识会大有裨益: 直播和点播 直播(LIVE)的视频源是主播实时推送的。因此,主播停止推送后,播放端的画面也会随即停止,而且由于是实时直播,所以播放器在播直播 URL 的时候是没有进度条的。 点播(VOD)的视频源是云端的一个视频文件,只要未被从云端移除,视频就可以随时播放, 播放中您可以通过进度条控制播放位置,腾讯视频和优酷土豆等视频网站上的视频观看就是典型的点播场景。 协议的支持 通常使用的点播协议如下,现在比较流行的是 HLS(以“http”打头,以“.m3u8”结尾)的点播地址:
资源推荐
资源详情
资源评论

























收起资源包目录





































































































共 1143 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论


野生的狒狒
- 粉丝: 3491
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据时代下计算机网络信息安全问题探讨.docx
- 中国在国际煤炭市场定价格局中的地位与策略-基于贸易网络核心一边缘结构分析.docx
- JEE架构办公自动化系统设计方案与实现.doc
- 卫星通信接收技术知识.doc
- 项目管理中的第三方监控.docx
- 人工智能带来的伦理与社会挑战.docx
- vb学生宿舍管理系统设计方案.doc
- 数据库课程设计参考模版.doc
- 提取二值化指纹图像中特征数据算法研究分析报告.doc
- 大数据检测在公安信息安全中的应用.docx
- 提高路桥施工项目管理水平的措施探讨.docx
- 《不要沉迷于网络游戏》教案.doc
- 大数据时代档案信息化建设措施.docx
- Fortran结构化程序设计.ppt
- 图像处理与影视后期课程教学大纲.docx
- 搭上电子商务快车的传统机械制造企业-河南黎明重工科技股份有限公司发展态势分析与展望.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
