如何基于OSS和MTS,快速搭建音视频文件上传服务?
摘要: 背景 本文主要介紹如何基于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)擊開始上傳按鈕。
Android端:
確保Android端已經(jīng)添加如下權(quán)限:
下載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)上傳成功。
主要代碼:
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)上傳成功。
主要代碼:
總結(jié)
以上是生活随笔為你收集整理的如何基于OSS和MTS,快速搭建音视频文件上传服务?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【阿里云MVP月度分享】SaaS服务商如
- 下一篇: Quorum 和唱票那回事