阿里雲OSS視頻上傳的幾種方式
1.Web端直傳實踐簡介
https://help.aliyun.com/document_detail/31923.html?spm=a2c4g.11186623.6.631.apBNnA
2.JavaScript客戶端簽名直傳(這種適合js直接跟阿里雲服務器交互)
https://help.aliyun.com/document_detail/31925.html?spm=a2c4g.11186623.6.632.k7bluc
3.服務端簽名后直傳
https://help.aliyun.com/document_detail/31926.html?spm=a2c4g.11186623.6.633.p55gjq
關於預覽圖的相關操作
OSS提供的視頻截幀功能和OSS圖片服務功能使用的方式是類似的,都是通過傳入x-oss-process參數的方式來實現的。最簡單的使用方式就是直接在public的object的url后面拼接處理字符串。比如如下的url:
http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast
指定的就是對demo.mp4這個文件直接調用視頻截圖,截圖的位置由參數t指定,后面的單位是ms,因此這個url的含義就是截取視頻文件的第10s的內容。生成的url可以直接嵌入在網頁提供給用戶瀏覽。
如果需要對private的object調用視頻截圖,需要使用SDK進行鑒權,接口和OSS圖片服務的調用接口一致。
目前OSS只支持視頻編碼為h264的視頻文件的處理,視頻格式本身沒有限制。
調用參數
目前支持的參數見視頻截幀功能的文檔:
https://help.aliyun.com/document_detail/64555.html。
這里介紹一下具體的一些應用:
時間越界
視頻截幀是通過t來指定截幀時間參數,t的范圍為0到INT32_MAX,當t指定的時間超出視頻的長度的時候,返回視頻最后一幀的內容。
控制圖片輸出大小
視頻截幀功能支持選擇輸出圖片的大小,使用w參數指定寬度,h指定長度。
- 不指定w和h參數,或者w和h都指定為0,輸出的圖片大小為視頻的真實長寬。
- 單獨指定w或者h參數,輸出的圖片大小指定的數值,另外一個沒有指定的數值通過視頻原始比例自動計算出來。
- 同時指定w和h參數,輸出圖片大小為指定的數值,如果長寬比例和原始視頻比不相等則強制拉伸。
比如下面這個url就是將輸出的圖片大小指定為800寬度。
關鍵幀
關鍵幀,也稱I幀,是視頻編碼中的一個關鍵概念,指的是不依賴於前后參考幀就能獨立解碼的一種視頻幀,在h264格式中常見的關鍵幀間隔為3-10秒。解碼關鍵幀只需要讀取關鍵幀對應的數據,而解碼非關鍵幀需要順序讀取上一個關鍵幀到當前幀所有的數據才能完成。因此在OSS視頻截幀功能中提供了控制功能,可以選擇是否只讀取關鍵幀信息,即m參數。
當m指定為fast的時候,OSS讀取到指定時間點之前最接近的一個關鍵幀就解碼返回;如果沒有指定該參數則會持續解碼到精確的時間點對應的視頻幀再返回。對於沒有特殊需求的用戶來說,OSS強烈建議指定m_fast參數,這樣可以大大提升截幀的請求響應速度。
輸出格式
OSS輸出的視頻格式支持jpg和png兩種格式,可以通過f參數來切換,默認輸出的是jpg格式,對於沒有特殊需求的用戶無需指定該參數。
下面這個url就是將輸出格式切換為png。