h5視頻上傳之前端視頻壓縮研究


今天領導接到一個h5上傳手機視頻的需求,主要是要看用戶在這個視頻中有沒有完成某個任務,比如投籃進了幾個球。
但是由於手機拍攝的視頻文件大小有點大,直接上傳的話,用戶流量頂不住,而且特別耗時,在這樣的情況下領導提出視頻壓縮的要求。

作為前端,我的想法是不行的,首先傳統的做法是服務器壓縮(想要了解服務器壓縮的請谷歌或者百度FFmpeg命令),參考服務器壓縮,服務器壓縮是多種的,可以壓縮視頻的幀數、壓縮視頻的畫質(圖像的畫質)、改變文件編碼。
從這幾個方面出發,

減少幀數,用canvas定時繪制視頻,這樣就可以控制幀數,但是這里就有兩個問題,一:視頻必須在客戶端從頭到尾播放完成,這樣canvas才能繪制到視頻的畫面,而且播放視頻的時候視頻在ios中會默認全屏播放,導致用戶體驗不好,網頁行內播放;二:可能會卡(這個來不及測試),這個是因為保存一張圖片需要的操作是把當前視頻的圖像渲染到canvas上,然后canvas導出base64圖像,這個操作還是比較消耗資源的,所以我認為假如設定20幀或者10幀就會讓頁面變得很卡。

壓縮畫質和改變編碼,可以調用canvas的canvas.toDataURL(type, encoderOptions)函數,第一個參數是文件類型,第二個參數是圖像質量。

從這個3個方面做有個致命的缺點就是沒有音軌,因為都把視頻分成多張圖片保存了,還有一個影響因素,視頻的編碼不僅僅是一張張的圖片,里面也存在減小占用空間的算法,因此不一定最后壓縮出來的全部內存占用會比原始視頻文件小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM