天天看點

如何使用OSS視訊截幀功能快速生成視訊預覽調用方式調用參數

OSS作為對象存儲産品,主要提供的是海量非結構化資料的存儲,其中絕大部分都是視訊和圖檔等富媒體資料,針對該場景的需求,OSS提供了豐富的圖檔處理功能來幫助使用者更加友善的對存儲于OSS上的圖檔資料進行加工,進而減少了對于流量、CPU等資源的消耗。

但是随着視訊業務的發展,對于如何處理OSS上大量的視訊資料在業務上也是一個比較大的挑戰。比如視訊預覽就是很多業務場景下的強需求,正常的做法是從OSS讀取視訊檔案然後本地處理再傳回給使用者,這個過程中檔案讀取和處理都會存在一定的瓶頸。針對這個場景,OSS内置提供了視訊截幀功能。這裡主要介紹OSS提供的視訊截幀功能的使用方法。

OSS提供的視訊截幀功能和OSS圖檔服務功能使用的方式是類似的,都是通過傳入x-oss-process參數的方式來實作的。最簡單的使用方式就是直接在public的object的url後面拼接處理字元串。比如如下的url:

<a href="http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast" target="_blank">http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast</a>

如何使用OSS視訊截幀功能快速生成視訊預覽調用方式調用參數

指定的就是對demo.mp4這個檔案直接調用視訊截圖,截圖的位置由參數t指定,後面的機關是ms,是以這個url的含義就是截取視訊檔案的第10s的内容。生成的url可以直接嵌入在網頁提供給使用者浏覽。

如果需要對private的object調用視訊截圖,需要使用SDK進行鑒權,接口和OSS圖檔服務的調用接口一緻。

目前OSS隻支援視訊編碼為h264的視訊檔案的處理,視訊格式本身沒有限制。

這裡介紹一下具體的一些應用:

視訊截幀是通過t來指定截幀時間參數,t的範圍為0到INT32_MAX,當t指定的時間超出視訊的長度的時候,傳回視訊最後一幀的内容。

視訊截幀功能支援選擇輸出圖檔的大小,使用w參數指定寬度,h指定長度。

不指定w和h參數,或者w和h都指定為0,輸出的圖檔大小為視訊的真實長寬。

單獨指定w或者h參數,輸出的圖檔大小指定的數值,另外一個沒有指定的數值通過視訊原始比例自動計算出來。

同時指定w和h參數,輸出圖檔大小為指定的數值,如果長寬比例和原始視訊比不相等則強制拉伸。

比如下面這個url就是将輸出的圖檔大小指定為800寬度。

<a href="http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast,w_800" target="_blank">http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast,w_800</a>

如何使用OSS視訊截幀功能快速生成視訊預覽調用方式調用參數

關鍵幀,也稱I幀,是視訊編碼中的一個關鍵概念,指的是不依賴于前後參考幀就能獨立解碼的一種視訊幀,在h264格式中常見的關鍵幀間隔為3-10秒。解碼關鍵幀隻需要讀取關鍵幀對應的資料,而解碼非關鍵幀需要順序讀取上一個關鍵幀到目前幀所有的資料才能完成。是以在OSS視訊截幀功能中提供了控制功能,可以選擇是否隻讀取關鍵幀資訊,即m參數。

當m指定為fast的時候,OSS讀取到指定時間點之前最接近的一個關鍵幀就解碼傳回;如果沒有指定該參數則會持續解碼到精确的時間點對應的視訊幀再傳回。對于沒有特殊需求的使用者來說,OSS強烈建議指定m_fast參數,這樣可以大大提升截幀的請求響應速度。

OSS輸出的視訊格式支援jpg和png兩種格式,可以通過f參數來切換,預設輸出的是jpg格式,對于沒有特殊需求的使用者無需指定該參數。

下面這個url就是将輸出格式切換為png。

<a href="http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast,w_800,f_png" target="_blank">http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_10000,m_fast,w_800,f_png</a>

如何使用OSS視訊截幀功能快速生成視訊預覽調用方式調用參數

繼續閱讀