去年寫過一篇文章,是教大家用FFmpeg制作GIF影片的,今天在討論到專案中碰到的一個.apng影片素材引起的程式崩潰時,有位同學建議:我們為啥不用WebP來代替.apng?是啊,why not?
網上搜到一篇文章,自己試了一下,發現強大的FFmpeg果然支持制作WebP動圖,于是順手做了些筆記,
先來試一下這條命令:
ffmpeg -ss 25 -t 5 -i D:\Media\bear.wmv -vf scale=240:-1 -r 10 -lossless 1 -loop 0 -y D:\bear-lossless.webp
意思是:將D:\Media目錄下的源檔案bear.wmv,從第25秒的位置開始,截取5秒長度的視頻,畫面寬度按比例縮放到240像素,并且控制輸出幀率為10fps后轉成webp檔案,最終保存為D:\bear-lossless.webp,注意到,我們這次用的是無損壓縮(-lossless 1),并且生成的影片是無限回圈播放的(-loop 0),
當你迫不及待地找到新鮮生成的bear-lossless.webp檔案,雙擊滑鼠,彈出了系統默認的看圖軟體——呃,怎么不是影片呀?莫急!那只是因為你用的看圖軟體太菜了,將bear-lossless.webp檔案拖進Chrome瀏覽器吧,馬上就看到效果了!
既然提到了無損壓縮,接下來我們再試試有損壓縮吧,這時用到了qscale質量因子,它的取值范圍為0-100,數值越高影像質量越好,我們用80來試試,命令列如下:
ffmpeg -ss 25 -t 5 -i D:\Media\bear.wmv -vf scale=240:-1 -r 10 -qscale 80 -loop 0 -y D:\bear-q80.webp
作為對比,我們用相同的這段視頻生成一個GIF影片,命令列如下:
ffmpeg -ss 25 -t 5 -i D:\Media\bear.wmv -vf scale=240:-1 -r 10 -y -f gif D:\bear.gif
對比后發現,無損壓縮的bear-lossless.webp檔案最大,有1.3MB;采用有損壓縮后,bear-q80.webp檔案變小了很多,只有177KB;而同樣較小的bear.gif檔案(僅154KB),影像質量明顯差于bear-q80.webp,說明什么問題?WebP壓縮演算法優秀啊!
回到實際的軟體專案中來,我們要用的WebP能從視頻中抽取出來嗎?通常情況不是這樣的,設計師往往會制作完整影片程序所對應的一系列靜態圖片,那么,怎樣把這個圖片序列生成一個WebP動圖呢?其實也很簡單,命令列如下:
ffmpeg -f image2 -framerate 10 -i D:\Media\pics\cache_loading_%02d.jpeg -loop 0 -y D:\loading.webp
意思是:將設計師制作的影片單幀圖片分別按照cache_loading_xx.jpeg格式命名,其中xx是連續的兩位整數,并把這些檔案都放在同一個檔案夾下,執行上述命令后,這些靜態檔案按照幀率10fps生成一個WebP動圖檔案D:\loading.webp,
很棒哦,快把loading.webp拖進Chrome瀏覽器看看吧!對比檔案大小(loading.apng 81KB vs. loading.webp 42KB),差不多縮減了一半,滿滿的驚喜!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/183695.html
標籤:其他
上一篇:數字影像處理-DFT&DCT&WHT&小波變換分解重構(Matlab)
下一篇:PCB如何添加矢量圖形logo
