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 下载量 51 浏览量
2023-06-09
21:57:59
上传
评论
收藏 23.62MB RAR 举报
温馨提示
通过本文您可以学会 如何集成腾讯云视立方 Flutter 播放器 SDK。 如何使用播放器 SDK 进行点播播放。 如何使用播放器 SDK 底层能力实现更多功能。 基础知识 本文主要介绍视频云 SDK 的点播播放功能,在此之前,先了解如下一些基本知识会大有裨益: 直播和点播 直播(LIVE)的视频源是主播实时推送的。因此,主播停止推送后,播放端的画面也会随即停止,而且由于是实时直播,所以播放器在播直播 URL 的时候是没有进度条的。 点播(VOD)的视频源是云端的一个视频文件,只要未被从云端移除,视频就可以随时播放, 播放中您可以通过进度条控制播放位置,腾讯视频和优酷土豆等视频网站上的视频观看就是典型的点播场景。 协议的支持 通常使用的点播协议如下,现在比较流行的是 HLS(以“http”打头,以“.m3u8”结尾)的点播地址:
资源推荐
资源详情
资源评论
收起资源包目录
适用于 Flutter 的腾讯云点播上传 SDK.rar (1143个子文件)
libmtasdk.a 7.83MB
CodeDirectory 155B
CodeDirectory 153B
CodeRequirements 12B
CodeRequirements 12B
CodeRequirements-1 203B
CodeRequirements-1 201B
CodeResources 77KB
CodeResources 34KB
CodeSignature 0B
CodeSignature 0B
tx_ugc_publish.dart 3KB
tx_publish_param.dart 1KB
tx_publish_result.dart 1KB
tx_media_publish_param.dart 979B
tx_media_publish_result.dart 951B
widget_test.dart 926B
main.dart 605B
flutter_txugcupload_test.dart 588B
flutter_txugcupload.dart 290B
tx_media_publish_listener.dart 213B
tx_video_publish_listener.dart 187B
.gitignore 732B
.gitignore 569B
.gitignore 520B
.gitignore 398B
.gitignore 285B
.gitignore 97B
.gitkeep 0B
build.gradle 2KB
build.gradle 770B
build.gradle 592B
settings.gradle 462B
settings.gradle 41B
QCloudUICKeyChainStore.h 19KB
QCloudUICKeyChainStore.h 19KB
QCloudUICKeyChainStore.h 19KB
QCloudCOSXMLService+Transfer.h 16KB
QCloudCOSXMLService+Transfer.h 16KB
QCloudCOSXMLService+Transfer.h 16KB
QCloudSimplePing.h 11KB
QCloudSimplePing.h 11KB
QCloudSimplePing.h 11KB
NSObject+QCloudModel.h 10KB
NSObject+QCloudModel.h 10KB
NSObject+QCloudModel.h 10KB
QCloudPostVideoRecognitionRequest.h 9KB
QCloudCOSXML-umbrella.h 9KB
QCloudPutObjectCopyRequest.h 9KB
QCloudPutObjectCopyRequest.h 9KB
QCloudPutObjectCopyRequest.h 9KB
QCloudClassInfo.h 9KB
QCloudClassInfo.h 9KB
QCloudClassInfo.h 9KB
QCloudVideoRecognitionResult.h 8KB
QCloudCOSXMLService+Manager.h 8KB
QCloudCOSXMLService+Manager.h 8KB
QCloudCOSXMLService+Manager.h 8KB
QCloudUploadPartCopyRequest.h 8KB
QCloudUploadPartCopyRequest.h 8KB
QCloudUploadPartCopyRequest.h 8KB
QCloudInitiateMultipartUploadRequest.h 8KB
QCloudInitiateMultipartUploadRequest.h 8KB
QCloudInitiateMultipartUploadRequest.h 8KB
QCloudPutBucketInventoryRequest.h 8KB
QCloudPutBucketInventoryRequest.h 8KB
QCloudPutBucketInventoryRequest.h 8KB
QCloudGetRecognitionObjectRequest.h 8KB
QCloudGetRecognitionObjectRequest.h 8KB
QCloudGetRecognitionObjectRequest.h 8KB
QCloudGetObjectRequest.h 7KB
QCloudGetObjectRequest.h 7KB
QCloudGetObjectRequest.h 7KB
QCloudPutObjectWatermarkRequest.h 7KB
QCloudPutObjectWatermarkRequest.h 7KB
QCloudPutObjectWatermarkRequest.h 7KB
QCloudPutBucketWebsiteRequest.h 7KB
QCloudPutBucketWebsiteRequest.h 7KB
QCloudPutBucketWebsiteRequest.h 7KB
QCloudPutObjectRequest.h 7KB
QCloudPutObjectRequest.h 7KB
QCloudPutObjectRequest.h 7KB
QCloudGetFilePreviewRequest.h 7KB
QCloudGetFilePreviewRequest.h 7KB
QCloudGetFilePreviewRequest.h 7KB
QCloudCOSXMLUploadObjectRequest.h 7KB
QCloudCOSXMLUploadObjectRequest.h 7KB
QCloudCOSXMLUploadObjectRequest.h 7KB
QCloudCOSXMLService.h 7KB
QCloudCOSXMLService.h 7KB
QCloudCOSXMLService.h 7KB
QCloudPutBucketACLRequest.h 7KB
QCloudPutBucketACLRequest.h 7KB
QCloudPutBucketACLRequest.h 7KB
QCloudPutBucketLifecycleRequest.h 7KB
QCloudPutBucketLifecycleRequest.h 7KB
QCloudPutBucketLifecycleRequest.h 7KB
QCloudSerializationCSV.h 7KB
QCloudSerializationCSV.h 7KB
QCloudSerializationCSV.h 7KB
共 1143 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
野生的狒狒
- 粉丝: 1686
- 资源: 1668
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功