日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何基于OSS和MTS,快速搭建音视频文件上传服务?

發(fā)布時(shí)間:2024/8/23 编程问答 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何基于OSS和MTS,快速搭建音视频文件上传服务? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要: 背景 本文主要介紹如何基于OSS服務(wù)和MTS的上傳SDK,快速搭建一個(gè)音視頻文件上傳服務(wù)。 優(yōu)勢(shì) 使用MTS的上傳SDK上傳音視頻文件,具有以下優(yōu)勢(shì): 增加文件列表管理功能。 增加STS Token 超時(shí)更新功能。

背景
本文主要介紹如何基于OSS服務(wù)和MTS的上傳SDK,快速搭建一個(gè)音視頻文件上傳服務(wù)。

優(yōu)勢(shì)
使用MTS的上傳SDK上傳音視頻文件,具有以下優(yōu)勢(shì):

增加文件列表管理功能。
增加STS Token 超時(shí)更新功能。
增加上傳過程中網(wǎng)絡(luò)抖動(dòng)時(shí)的自動(dòng)重試功能。
文件斷點(diǎn)續(xù)傳功能。
自動(dòng)觸發(fā)MTS服務(wù)的媒體工作流。
配置媒體標(biāo)題、標(biāo)簽、描述、類目、封面URL、等功能。
注意:

斷點(diǎn)續(xù)傳的限制條件:不允許跨生命周期。JS端頁(yè)面不能刷新、關(guān)閉,android/iOS不能關(guān)閉APP、手機(jī)。
同一本地文件只能上傳一次。
上傳服務(wù)架構(gòu)圖

服務(wù)端搭建
考慮移動(dòng)端AK安全性問題,選用STS的方式上傳文件。關(guān)于STS如何增加上傳的安全性,請(qǐng)參考RAM和STS使用指南

STS開通流程
開通OSS服務(wù),創(chuàng)建Bucket,并登錄OSS控制臺(tái)
在OSS概覽頁(yè)中找到基礎(chǔ)配置區(qū)域,單擊 安全令牌,如下圖所示:

進(jìn)入到 安全令牌快捷配置 頁(yè)面。

系進(jìn)行自動(dòng)授權(quán),請(qǐng)務(wù)必保存下圖中三個(gè)紅框內(nèi)的參數(shù)。單擊保存AK信息后,對(duì)話框會(huì)關(guān)閉,STS的開通完成。

搭建一個(gè)應(yīng)用服務(wù)器
應(yīng)用服務(wù)器示例的配置

每個(gè)語(yǔ)言包下載下來(lái)后,都會(huì)有一個(gè)配置文件config.json如下所示:

{"AccessKeyID" : "","AccessKeySecret" : "","RoleArn" : "","TokenExpireTime" : "900","PolicyFile": "policy/all_policy.txt" }

說(shuō)明:

AccessKeyID: 填寫上述圖標(biāo)紅的參數(shù)1的內(nèi)容。
AccessKeySecret: 填寫上述圖標(biāo)紅的參數(shù)2的內(nèi)容。
RoleArn: 填寫上述圖標(biāo)紅的參數(shù)3的內(nèi)容。
TokenExpireTime: 指Android/iOS應(yīng)用取到這個(gè)Token的失效時(shí)間,注意,最少是900s,默認(rèn)值可以不修改。
PolicyFile: 填寫的是該Token所要擁有的權(quán)限列表的文件, 默認(rèn)值可以不修改。
本文檔準(zhǔn)備了三種最常用token權(quán)限文件,放于policy目錄下面。分別是:

all_policy.txt:指定了該token擁有對(duì)該賬號(hào)下創(chuàng)建Bucket、刪除Bucket、上傳文件、下載文件、刪除文件的權(quán)限 。
bucket_read_policy.txt:指定了該token擁有該賬號(hào)下對(duì)指定Bucket的讀權(quán)限。
bucket_read_write_policy.txt: 指定了該token擁有該賬號(hào)下對(duì)指定Bucket的讀寫權(quán)限。
如果您想要指定這個(gè)Token只能對(duì)指定的bucket有讀寫權(quán)限, 請(qǐng)把(bucket_read_policy.txt、 bucket_read_write_policy.txt)這些文件里面$BUCKET_NAME直接替換成指定的bucket名字。

返回的格式解析

{"status":200,"AccessKeyId":"STS.3pYjsdgdgagdasdg","AccessKeySecret":"rpnwO9kvEgetGdrddgsR2YrTtI","Security":"CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVtbzI=","Expiration":"2015-12-12T07:49:09Z", }

說(shuō)明(下面四個(gè)變量將構(gòu)成了一個(gè)Token。):

status:表示獲取Token的狀態(tài),獲取成功時(shí),返回值是200。
AccessKeyId: 表示Android/iOS應(yīng)用初始化OSSClient獲取的 AccessKeyId。
AccessKeySecret: 表示Android/iOS應(yīng)用初始化OSSClient獲取AccessKeySecret。
SecurityToken:表示Android/iOS應(yīng)用初始化的Token。
Expiration: 表示該Token失效的時(shí)間。主要在Android SDK會(huì)自動(dòng)判斷是否失效,自動(dòng)獲取Token。
代碼示例的運(yùn)行方法
對(duì)于JAVA版本 (依賴于java 1.7),將包下載解壓后
運(yùn)行方法:java -jar oss-token-server.jar (port)。如果不指定port(端口), 直接運(yùn)行java –jar oss-token-server.jar,程序會(huì)監(jiān)聽7080端口。如果想讓程序執(zhí)行在9000端口,運(yùn)行java –jar app-token-server.jar 9000 , 其他端口也類似。

對(duì)于PHP版本,將包下載解壓后,修改config.json這個(gè)文件,直接運(yùn)行php sts.php 即能生成Token,將程序部署到指定的地址。
使用MTS客戶端SDK
客戶端示例代碼

SDK核心代碼:
JS端
在使用JS SDK之前,先對(duì)要上傳視頻的OSS Bucket 已經(jīng)開啟了CORS訪問權(quán)限。下載JS的Demo,在瀏覽器中打開, 在頁(yè)面上進(jìn)行參數(shù)配置:

配置”HTTP地址”為上面配置的應(yīng)用服務(wù)器地址,如http://127.0.0.1:7080/。
配置用戶Bucket。
配置Bucket的endpoint。
點(diǎn)擊選擇文件,選中要上傳的文件。
點(diǎn)擊開始上傳按鈕。

// 初始化客戶端 var uploader = new VODUpload({// 開始上傳'onUploadstarted': function (uploadInfo) {;},// 文件上傳成功'onUploadSucceed': function (uploadInfo) {console.log("上傳成功");},// 文件上傳失敗'onUploadFailed': function (uploadInfo, code, message) {console.log("上傳失敗");},// 文件上傳進(jìn)度,單位:字節(jié)'onUploadProgress': function (uploadInfo, totalSize, uploadedSize) {console.log("上傳進(jìn)度");},// 安全令牌超時(shí)'onUploadTokenExpired': function (uploadInfo) {console.log("token超時(shí)");} }); // 獲取sts信息 result = httpGet(httpServer); stsToken = JSON.parse(result); uploader.init(stsToken.AccessKeyId, stsToken.AccessKeySecret, stsToken.SecurityToken, stsToken.Expiration); // 添加文件 uploader.addFile(event.target.files[i], endpoint, bucket, object, userData); // 開始上傳 uploader.startUpload();

Android端
確保Android端已經(jīng)添加如下權(quán)限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

下載Android端Demo,進(jìn)行如下修改:

修改MainActivity里面的serverUrl為應(yīng)用服務(wù)器配置地址,如http://192.168.0.2:7080/
配置用戶Bucket。
配置用戶Bucket對(duì)應(yīng)的endpoint。
運(yùn)行Demo,點(diǎn)擊添加文件。
點(diǎn)擊上傳,在OSS對(duì)應(yīng)Bucket的uploadtest/目錄下查看文件是否已經(jīng)上傳成功。
主要代碼:

VODUploadClient uploader = new VODUploadClientImpl(getApplicationContext()); VODUploadCallback callback = new VODUploadCallback() {@Overridepublic void onUploadSucceed(UploadFileInfo info) {;}@Overridepublic void onUploadFailed(UploadFileInfo info, String code, String message) {;}@Overridepublic void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {;}@Overridepublic void onUploadTokenExpired(UploadFileInfo info) {// 獲取并更新 sts token。uploader.resumeWithToken("<accessKeyId>", "<accessKeySecret>", "<secretToken>", "<expireTime>");}@Overridepublic void onUploadRetry(UploadFileInfo info, String code, String message) {;}@Overridepublic void onUploadRetryResume(UploadFileInfo info) {;}@Overridepublic boolean onUploadStarted(UploadFileInfo uploadFileInfo) {;} }; // 獲取sts token并初始化 uploader.init("<accessKeyId>", "<accessKeySecret>", "<secretToken>", "<expireTime>", callback); // 添加文件 uploader.addFile("<uploadFilePath>", "<endpoint>", "<bucketName>", "<objectKey>"); // 開始上傳 uploader.start();

iOS端
下載iOS端Demo,進(jìn)行如下修改:

修改VODUploadDemo.m里面的serverUrl為應(yīng)用服務(wù)器配置地址,如http://192.168.0.2:7080/
配置用戶Bucket。
配置用戶Bucket對(duì)應(yīng)的endpoint。
運(yùn)行Demo,點(diǎn)擊添加文件。
點(diǎn)擊上傳,在OSS對(duì)應(yīng)Bucket的uploadtest/目錄下查看文件是否已經(jīng)上傳成功。
主要代碼:

// 回調(diào)初始化 OnUploadStartedListener testUploadStartedCallbackFunc = ^(UploadFileInfo* fileInfo) {;}; OnUploadSucceedListener testSuccessCallbackFunc = ^(NSString* filePath){;}; OnUploadFailedListener testFailedCallbackFunc = ^(NSString* filePath, NSString* code, NSString* message){;}; OnUploadProgressListener testProgressCallbackFunc = ^(NSString* filePath, long uploadedSize, long totalSize) {;}; OnUploadTokenExpiredListener testTokenExpiredCallbackFunc = ^{// 獲取并更新sts token[uploader resumeWithToken:<accessKeyId>accessKeySecret:<accessKeySecret>secretToken:<secretToken>expireTime:<expireTime>] }; OnUploadRertyListener testUploadRertyListener = ^{;}; OnUploadRertyResumeListener testUploadRertyResumeListener = ^{;}; VODUploadListener *listener; listener = [[VODUploadListener alloc] init]; listener.started = testUploadStartedCallbackFunc; listener.success = testSuccessCallbackFunc; listener.failure = testFailedCallbackFunc; listener.progress = testProgressCallbackFunc; listener.expire = testTokenExpiredCallbackFunc; listener.retry = testUploadRertyListener; listener.retryResume = testUploadRertyResumeListener; // 獲取Token // 上傳客戶端初始化 VODUploadClient *uploader; [uploader init:<accessKeyId>accessKeySecret:<accessKeySecret>secretToken:<secretToken>expireTime:<expireTime>listener:listener]; // 添加文件 [uploader addFile:<uploadFilePath>endpoint:<endpoint>bucket:<bucketName>object:<objectKey>]; // 開始上傳 [uploader start];

總結(jié)

以上是生活随笔為你收集整理的如何基于OSS和MTS,快速搭建音视频文件上传服务?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美在线观看不卡 | 好看的中文字幕av | 国产精品视频合集 | 日韩成人综合网 | 人妻熟女一区二区三区app下载 | 国产美女无遮挡网站 | 日韩一中文字幕 | 欧美一级无毛 | 国产裸体舞一区二区三区 | 成人性生交生交视频 | 日韩精品一区二区三区中文在线 | 国产免费又粗又猛又爽 | 欧美特黄视频 | 黑人干日本少妇 | 91精品啪 | 521a人成v香蕉网站 | 精品国产999久久久免费 | 在线观看你懂的网址 | 成人午夜天 | 亚洲精品一区二区在线观看 | 国产精品久久久免费视频 | 777四色| 一区视频在线播放 | 国自产拍偷拍精品啪啪一区二区 | 亚洲欧洲综合在线 | 久久综合五月 | 免费99视频 | 中文国语毛片高清视频 | 亚洲国产成人一区二区精品区 | 男女免费看 | 黄色777| 亚洲啪啪| 午夜视频一区二区三区 | 欧美精品电影一区二区 | 老司机一区 | 成人免费大片黄在线播放 | 内射国产内射夫妻免费频道 | 欧美黑人啪啪 | 精品人妻午夜一区二区三区四区 | www.亚色| 淫僧荡尼巨乳(h)小说 | 波多野结衣视频观看 | 国产精品伦一区二区三级视频 | 日本69av | 曰批视频在线观看 | 蜜桃香蕉视频 | 久久精品丝袜高跟鞋 | 成人夜间视频 | 久久午夜网站 | 亚洲宗人网| 中文字幕日韩有码 | 粉色午夜视频 | 夜夜夜影院 | 免费久久av| 男人操女人网站 | 全部免费毛片在线播放一个 | 亚洲一区二区三区影视 | 午夜日韩在线观看 | 毛片aaa | 中文字幕一区在线观看 | 奇米婷婷 | 亚洲天堂五码 | 福利二区| 99精品久久久久久久 | 美女一区二区三区视频 | 欧美巨大荫蒂茸毛毛人妖 | 国产成人精品a视频 | 亚洲无线视频 | 与子敌伦刺激对白播放的优点 | melody在线高清免费观看 | 黄视频在线 | 五月天婷婷在线播放 | 无码少妇一级AV片在线观看 | 亚洲香蕉久久 | 黄网站免费观看 | 黄色国产网站 | 日韩午夜在线视频 | 亚洲国产永久 | 自拍偷拍第2页 | 国产一级视频 | 国产乱妇4p交换乱免费视频 | 亚洲最大免费视频 | 欧美乱妇15p | av大片免费在线观看 | 开元在线观看视频国语 | 大伊人网 | 人人妻人人澡人人爽久久av | 精品免费国产一区二区三区 | 国产成人av一区二区 | 午夜欧美激情 | 尤物av无码色av无码 | 一区二区在线不卡 | 26uuu精品一区二区在线观看 | 男人天堂a| 伊人动漫 | 国产一区二区三区亚洲 | 日本一区二区不卡在线观看 | 韩国伦理中文字幕 | 国产一区日韩 |