使用FFmpeg來無損壓縮視頻文件的操作方法
咱們平時如果經(jīng)常拍視頻的話,都會遇到一個困境:視頻文件太大了,存儲的時候需要占用很多的空間。如果直接使用視頻壓縮工具來壓縮碼率的話,又會擔(dān)心損失了視頻的畫質(zhì),這該怎么辦呢?
這個時候,我們就可以使用ffmpeg的hevc編碼功能來實現(xiàn)無損的壓縮!
什么是FFmpeg?
FFmpeg是業(yè)內(nèi)有名的開源圖像視頻處理程序。它被廣泛的使用,在許多視頻剪輯軟件、圖像處理軟件中,都使用的FFmpeg,還有比如OBS這樣的導(dǎo)播軟件里面也使用了FFmpeg
啥是HEVC編碼?
咱們常用的MP4格式中,一般使用的都是H.264編碼格式,它于2003年被正式發(fā)布并廣泛使用于各種場合。
十年后,也就是2013年,HEVC編碼正式發(fā)布。HEVC是High Efficiency Video Coding(高效視頻編碼)的縮寫,又被稱為H.265.相較于H.264,它擁有更高的壓縮率。在畫質(zhì)相同時,HEVC編碼格式能節(jié)省25%~50%的存儲空間占用。因此,對于動輒幾個GB的視頻文件,使用HEVC編碼進行歸檔存儲,再也合適不過了。
HEVC編碼格式有什么缺點?
相較于H.264,HEVC編碼格式在編解碼的過程中,需要占用更多的硬件資源。大白話就是,速度更慢。因此,如果你的電腦沒有很好的顯卡來支持HEVC格式的硬件加速,那么將會以很慢的速度壓縮你的視頻,播放的時候也可能會發(fā)生卡頓。
并且,由于HEVC格式的普及程度不如已有近20年歷史的H.264,因此,有些播放軟件無法播放它。但是在不遠的將來,這個問題也不再是問題。
那就開始動手吧!
安裝FFmpeg
首先,我們打開FFmpeg的官網(wǎng)https://ffmpeg.org然后點擊“Download”按鈕,進入下載頁面,下載對應(yīng)的版本即可。然后在電腦上安裝。Windows還需要將安裝目錄添加到環(huán)境變量。
使用FFmpeg
FFmpeg是一個只有命令行界面的程序,因此需要在電腦的控制臺里面運行它。
Windows小提示
Windows下,按鍵盤的win+R,然后輸入cmd,即可打開命令行界面
查看FFmpeg的幫助界面
讓我們在控制臺輸入以下命令:
ffmpeg -h
然后ffmpeg就會輸出它的幫助信息。由于信息是英文的,因此需要一點耐心去閱讀它。下面是與我們的目標相關(guān)聯(lián)的兩個幫助信息:
這是關(guān)于編碼器和解碼器的信息,然后我們可以輸入以下代碼,分別查看編碼器和解碼器的可選項:
ffmpeg -decoders
ffmpeg -encoders
ffmpeg -codecs
我們會發(fā)現(xiàn)輸出了一堆信息,讓我們眼花繚亂。是的,F(xiàn)Fmpeg就是這么強大,支持很多的編解碼器.
ffmpeg壓縮視頻指令
開始壓縮吧!
我們使用FFmpeg的libx265庫進行壓縮,只需要這樣的幾個簡單步驟:
為了安全起見,我們先將待壓縮的視頻復(fù)制到一個新的文件夾下面,防止誤操作丟失了數(shù)據(jù)。然后在新的這個文件夾中打開控制臺(windows下需要使用cd命令進去對應(yīng)的文件夾)。
接著,我們在文件夾下面新建一個新的文件夾,叫做output,待會我們輸出的視頻就存在這個文件夾里面。
這時候文件夾下面應(yīng)該長這樣:
接著,我們來研究一下怎么使用ffmpeg壓縮視頻。
一個最簡單的例子
我們可以使用以下的命令格式來輸出一個視覺無損的視頻:
ffmpeg -i 輸入文件名 -c:v libx265 -x265-params crf=18 output/輸出文件名.mp4
對于上圖的文件,命令就是下面這樣:
ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18 output/demo_1.mp4
然后,經(jīng)過一段時間的等待,我們就可以看到結(jié)果了!
左邊是源視頻,右邊是壓縮后的視頻。我們可以看到,它節(jié)省了29.6%的空間!而且,經(jīng)過我的測試,在視覺上,這兩個視頻的畫質(zhì)是差不多的。
進行更高級的壓縮
在這里,我們講解一下上面的參數(shù)設(shè)置的含義。crf是Constant Rate Factor的縮寫,它的值越小,畫質(zhì)越高,占用的空間越大。它的可選項為0~51,默認為28.當(dāng)crf在20以下的時候,就能實現(xiàn)視覺上的無損。
此外,FFmpeg還為我們提供了一些預(yù)設(shè)選項,我們可以通過preset選項,快速設(shè)置x265編碼的時候使用到的參數(shù)。
preset的可選項按照編碼速度從快到慢,排列如下:
ultrafast
superfast
veryfast
faster
fast
medium
slow
slower
veryslow
placebo
編碼速度越慢,則壓縮效果及畫質(zhì)越好。preset選項的默認參數(shù)為medium。
輸出最高壓縮效果的視覺無損視頻
ffmpeg -i 輸入文件名 -c:v libx265 -x265-params crf=18:preset=placebo output/輸出文件名.mp4
對于上面的視頻,我們可以用下面這個壓縮命令:
ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18:preset=placebo output/demo_2.mp4
壓縮前后大小對比如下:
雖然這次的體積只減少了13.1%,但是肉眼看視頻的時候,很明顯感覺視頻畫質(zhì)和原視頻沒啥區(qū)別。
這樣算下來,1GB的視頻,使用最高畫質(zhì)的無損壓縮,可以節(jié)省下131MB的空間呢!還是很可觀的!
批量的壓縮視頻
由于上面的方法壓縮視頻只能一個一個的壓縮,為此我簡單寫了一個python腳本來完成自動壓縮文件夾下的所有視頻的功能。
在電腦上安裝python和ffmpeg之后,即可運行這個腳本。然后,在腳本所在的文件夾下創(chuàng)建input文件夾及output文件夾。并把要壓縮的視頻放置在input文件夾下。運行python腳本之后,就會開始壓縮視頻,輸出文件放置在output文件夾下。
腳本我已經(jīng)上傳到GitHub:
Utility-gadgets/cv/batch_transcode2HEVC at main · fslongjin/Utility-gadgets · GitHub
https://github.com/fslongjin/Utility-gadgets/tree/main/cv/batch_transcode2HEVC
結(jié)語
FFmpeg的功能十分強大,遠不止視頻壓縮的功能。它的功能還有待我們?nèi)ヌ剿?,有興趣的同學(xué),可以在FFmpeg官網(wǎng)查看官方的文檔與教程,學(xué)習(xí)更多的知識哦~
到此這篇關(guān)于使用FFmpeg來無損壓縮視頻文件的文章就介紹到這了,更多相關(guān)FFmpeg壓縮視頻無損內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決pycharm每次新建項目都要重新安裝一些第三方庫的問題
今天小編就為大家分享一篇解決pycharm每次新建項目都要重新安裝一些第三方庫的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python將xml和xsl轉(zhuǎn)換為html的方法
這篇文章主要介紹了Python將xml和xsl轉(zhuǎn)換為html的方法,實例分析了使用libxml2模塊操作xml和xsl轉(zhuǎn)換為html的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03python用fsolve、leastsq對非線性方程組求解
這篇文章主要為大家詳細介紹了python用fsolve、leastsq對非線性方程組進行求解,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12python內(nèi)置進制轉(zhuǎn)換函數(shù)的操作
這篇文章主要介紹了python內(nèi)置進制轉(zhuǎn)換函數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06