如何基于OSS和MTS,快速搭建音视频文件上传服务?
摘要: 背景 本文主要介紹如何基于OSS服務(wù)和MTS的上傳SDK,快速搭建一個音視頻文件上傳服務(wù)。 優(yōu)勢 使用MTS的上傳SDK上傳音視頻文件,具有以下優(yōu)勢: 增加文件列表管理功能。 增加STS Token 超時更新功能。
背景
本文主要介紹如何基于OSS服務(wù)和MTS的上傳SDK,快速搭建一個音視頻文件上傳服務(wù)。
優(yōu)勢
使用MTS的上傳SDK上傳音視頻文件,具有以下優(yōu)勢:
增加文件列表管理功能。
增加STS Token 超時更新功能。
增加上傳過程中網(wǎng)絡(luò)抖動時的自動重試功能。
文件斷點(diǎn)續(xù)傳功能。
自動觸發(fā)MTS服務(wù)的媒體工作流。
配置媒體標(biāo)題、標(biāo)簽、描述、類目、封面URL、等功能。
注意:
斷點(diǎn)續(xù)傳的限制條件:不允許跨生命周期。JS端頁面不能刷新、關(guān)閉,android/iOS不能關(guān)閉APP、手機(jī)。
同一本地文件只能上傳一次。
上傳服務(wù)架構(gòu)圖
服務(wù)端搭建
考慮移動端AK安全性問題,選用STS的方式上傳文件。關(guān)于STS如何增加上傳的安全性,請參考RAM和STS使用指南
STS開通流程
開通OSS服務(wù),創(chuàng)建Bucket,并登錄OSS控制臺
在OSS概覽頁中找到基礎(chǔ)配置區(qū)域,單擊 安全令牌,如下圖所示:
進(jìn)入到 安全令牌快捷配置 頁面。
系進(jìn)行自動授權(quán),請務(wù)必保存下圖中三個紅框內(nèi)的參數(shù)。單擊保存AK信息后,對話框會關(guān)閉,STS的開通完成。
搭建一個應(yīng)用服務(wù)器
應(yīng)用服務(wù)器示例的配置
每個語言包下載下來后,都會有一個配置文件config.json如下所示:
{"AccessKeyID" : "","AccessKeySecret" : "","RoleArn" : "","TokenExpireTime" : "900","PolicyFile": "policy/all_policy.txt" }說明:
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)用取到這個Token的失效時間,注意,最少是900s,默認(rèn)值可以不修改。
PolicyFile: 填寫的是該Token所要擁有的權(quán)限列表的文件, 默認(rèn)值可以不修改。
本文檔準(zhǔn)備了三種最常用token權(quán)限文件,放于policy目錄下面。分別是:
all_policy.txt:指定了該token擁有對該賬號下創(chuàng)建Bucket、刪除Bucket、上傳文件、下載文件、刪除文件的權(quán)限 。
bucket_read_policy.txt:指定了該token擁有該賬號下對指定Bucket的讀權(quán)限。
bucket_read_write_policy.txt: 指定了該token擁有該賬號下對指定Bucket的讀寫權(quán)限。
如果您想要指定這個Token只能對指定的bucket有讀寫權(quán)限, 請把(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", }說明(下面四個變量將構(gòu)成了一個Token。):
status:表示獲取Token的狀態(tài),獲取成功時,返回值是200。
AccessKeyId: 表示Android/iOS應(yīng)用初始化OSSClient獲取的 AccessKeyId。
AccessKeySecret: 表示Android/iOS應(yīng)用初始化OSSClient獲取AccessKeySecret。
SecurityToken:表示Android/iOS應(yīng)用初始化的Token。
Expiration: 表示該Token失效的時間。主要在Android SDK會自動判斷是否失效,自動獲取Token。
代碼示例的運(yùn)行方法:
對于JAVA版本 (依賴于java 1.7),將包下載解壓后
運(yùn)行方法:java -jar oss-token-server.jar (port)。如果不指定port(端口), 直接運(yùn)行java –jar oss-token-server.jar,程序會監(jiān)聽7080端口。如果想讓程序執(zhí)行在9000端口,運(yùn)行java –jar app-token-server.jar 9000 , 其他端口也類似。
對于PHP版本,將包下載解壓后,修改config.json這個文件,直接運(yùn)行php sts.php 即能生成Token,將程序部署到指定的地址。
使用MTS客戶端SDK
客戶端示例代碼:
SDK核心代碼:
JS端:
在使用JS SDK之前,先對要上傳視頻的OSS Bucket 已經(jīng)開啟了CORS訪問權(quán)限。下載JS的Demo,在瀏覽器中打開, 在頁面上進(jìn)行參數(shù)配置:
配置”HTTP地址”為上面配置的應(yīng)用服務(wù)器地址,如http://127.0.0.1:7080/。
配置用戶Bucket。
配置Bucket的endpoint。
點(diǎn)擊選擇文件,選中要上傳的文件。
點(diǎn)擊開始上傳按鈕。
Android端:
確保Android端已經(jīng)添加如下權(quán)限:
下載Android端Demo,進(jìn)行如下修改:
修改MainActivity里面的serverUrl為應(yīng)用服務(wù)器配置地址,如http://192.168.0.2:7080/
配置用戶Bucket。
配置用戶Bucket對應(yīng)的endpoint。
運(yùn)行Demo,點(diǎn)擊添加文件。
點(diǎn)擊上傳,在OSS對應(yīng)Bucket的uploadtest/目錄下查看文件是否已經(jīng)上傳成功。
主要代碼:
iOS端:
下載iOS端Demo,進(jìn)行如下修改:
修改VODUploadDemo.m里面的serverUrl為應(yīng)用服務(wù)器配置地址,如http://192.168.0.2:7080/
配置用戶Bucket。
配置用戶Bucket對應(yīng)的endpoint。
運(yùn)行Demo,點(diǎn)擊添加文件。
點(diǎn)擊上傳,在OSS對應(yīng)Bucket的uploadtest/目錄下查看文件是否已經(jīng)上傳成功。
主要代碼:
總結(jié)
以上是生活随笔為你收集整理的如何基于OSS和MTS,快速搭建音视频文件上传服务?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【阿里云MVP月度分享】SaaS服务商如
- 下一篇: Quorum 和唱票那回事