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