日韩性视频-久久久蜜桃-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无码久久一区二区三 | 视频一区在线观看 | 成人动漫一区二区 | 日批在线 | 国产精品久久久av | 79日本xxxxxxxxx18 婷婷亚洲一区 | 美国黄色片网站 | 中日韩av在线 | 青娱乐在线免费视频 | 成人高潮片免费 | 欧美激情一区二区三区四区 | 插插看看 | 激情视频在线免费观看 | 女教师高潮黄又色视频 | 国产私人影院 | 欧美美女在线 | 操女网站 | 国产国语videosex另类 | 天天干网站 | 久色精品 | 久久久久久久久国产精品 | 岛国大片在线免费观看 | 18禁肉肉无遮挡无码网站 | 免费成人深夜 | 北条麻妃二三区 | 性高潮久久久久 | 国产xxx视频 | 亚洲欧美中文日韩在线v日本 | 亚洲精品一区久久久久久 | 精品黑人一区二区三区在线观看 | 嫩草在线观看 | 意大利少妇愉情理伦片 | 越南毛茸茸的少妇 | 国产99免费 | 日韩aa视频 | 日韩日日日| 成人午夜福利视频 | 亚洲精品乱码久久久久久国产主播 | 青青草原在线免费观看视频 | 欧美特级黄色大片 | 18深夜在线观看免费视频 | 欧美一区二区影院 | 特级西西人体444www高清大胆 | 日本日韩欧美 | aa亚洲 | 色综合亚洲 | 日本少妇做爰全过程毛片 | 爱如潮水3免费观看日本高清 | 中国一极毛片 | 欧美成人一二区 | 日本久久成人 | 亚洲在线天堂 | 国产美女久久久久久 | 干爹你真棒插曲免费 | 亚洲激情视频小说 | 国产探花一区二区三区 | 在线成人国产 | 欧美日韩一区二区三区四区五区六区 | 日韩一级色| 9999热视频| 天天草天天射 | 国产黄色录相 | 操网 | 欧美日韩人妻精品一区 | 午夜黄色影院 | 免费日韩一区二区 | 在线视频观看国产 | www日韩| 亚洲aⅴ乱码精品成人区 | 中文字幕欧美另类精品亚洲 | 国产精品成人一区二区 | 久久人爽| 欧美黄色性生活 | 国产吃瓜黑料一区二区 | 亚洲免费成人在线 | 国产欧美综合视频 | 国产第三区 | 饥渴少妇色诱水电工 | 婷婷国产一区二区三区 | 激情a | 69色堂| 麻豆性生活 | 男女操操 | 91精品综合久久久久久 | 国产不卡视频在线观看 | 成人在线一区二区三区 | 蜜臀av无码精品人妻色欲 | 毛片毛片毛片毛片 | 91网站视频在线观看 | 福利视频一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟 | www.毛片.com | 高清av网 |