tft每日頭條

 > 生活

 > 獲取ffmpeg支持的濾鏡

獲取ffmpeg支持的濾鏡

生活 更新时间:2024-10-05 19:07:02

大家好,我是波導終結者。

上一期的效率私房分享了幾個FFmpeg私房技巧,雖然不像爛大街的什麼UP主推薦一樣熱度高還給首頁,但是來交流、有硬需求的小夥伴還是不少的,今天就來解答一下,上期幾個小夥伴的需求。

全網唯一獨家幹貨,你到牆外也找不到的,先收藏點贊關注再看,不過份吧?

PS:那些說“私房”就該有那種玩藝兒沒有就要舉報的再出來跳跳?

顯卡編碼原來這麼簡單

獲取ffmpeg支持的濾鏡(波導的效率私房)1

上回有位朋友說到GPU加速,也即顯卡編碼。因為上期主要是分享重封裝,所以并沒有用到顯卡編碼。而強行将1080P視頻轉換成level 3.0的代碼,我在評論裡也解釋過了,顯卡編碼是奔着高規格高質量高速度去的,誰給你轉level 3.0?直接報錯好嗎,不信你自己試試。

獲取ffmpeg支持的濾鏡(波導的效率私房)2

所以這裡,把profile改成了high,level 改成4.1是比較正常的規格。FFmpeg内置的264編碼器也不止一個,但這裡還是沿用libx264,因為其他的也不見得比它好。其實大部分代碼還是沿用上次強轉level 3.0的。

獲取ffmpeg支持的濾鏡(波導的效率私房)3

2倍多的速度,CPU很努力了,換多好的CPU,就有多快呗。

獲取ffmpeg支持的濾鏡(波導的效率私房)4

那怎麼樣用顯卡編碼呢?很簡單,把編碼器換成h264_nvenc就行了。不過要注意的是,顯卡編碼器的參數一般是要比CPU編碼來得少的,所以有的參數無效,甚至有的參數會報錯,每個人需求不同,我就不細分了,隻能具體情況具體分析。

獲取ffmpeg支持的濾鏡(波導的效率私房)5

想要知道顯卡編碼是不是成功了,很簡單,跑一遍呗。14.6x的瞬時速度,整個轉下來差不多是15x的速度,你說顯卡編碼成功了沒?你上好的顯卡,它就能更快,你給我寄張3080來,我讓它飙到百倍以上~

其實我上次沒分享,一個是因為這個太簡單了呀,改一下不就好了,網上也能查得到。另一個就是,之所以用FFmpeg寫腳本,一般是要完成那些GUI工具完不成的事情,比如需求特殊等等。而如果隻是要用顯卡編碼的話,現在滿地的工具都可以實現,當然,諷刺的是,它們99%都是封裝的FFmpeg。

獲取ffmpeg支持的濾鏡(波導的效率私房)6

目前我用的最順手,也比較穩定的,就是ShanaEncoder,你直接選帶NVENC的就是顯卡編碼。

再重複一次,寫腳本是為了那些比較特殊、沒辦法用現成GUI工具做的需求,你如果隻是普通轉碼,免費開源基于FFmpeg的工具滿地都是。

MKV重封裝成MP4也不難

獲取ffmpeg支持的濾鏡(波導的效率私房)7

這位朋友的需求,是将MKV重封裝成MP4,這個說難不難,說易不易。

說它易吧,如果隻是封裝了一個音頻和視頻的MKV,那就是換個殼而已,網上有現成的腳本。

說它難吧,對MKV有點了解的朋友應該會知道,它算是一個比較特殊的容器格式,從原理上來講,它更接近于壓縮包,所以可以放進幾乎任何内容,音頻視頻,字幕圖片,文本甚至其他文件……所以,對MKV的支持才會是最難的。

這裡,我直接拿一個複雜點的MKV文件,來跟大家分享一下,MKV文件怎麼快速重封裝成MP4文件。

獲取ffmpeg支持的濾鏡(波導的效率私房)8

之前收藏的數碼寶貝第一部,1080P,H265編碼,三音軌(日配原聲,台配國語,粵配雷猴),簡繁雙字幕,封裝在一個MKV文件裡。

你用GUI工具打開,當然可以把裡面的内容一個個提出來,但是如果幾十集都要這樣手動提,然後再去怎麼樣整合的話,那還不整死人了。這裡我就教大家怎麼樣把要的東西提出來。

首先你要找到要的東西,第一當然是視頻,第二,我要國配,字幕不要,然後直接封裝成MP4格式。MP4不支持内嵌的外挂式字幕,如果要字幕隻能通過轉碼把字幕壓到視頻上,這裡略過。

找到要的東西之後,記下它們的ID,就是 mkvextract:0,這裡的0,記住從0開始。我要的視頻ID是0,音頻ID是4,記下來。

獲取ffmpeg支持的濾鏡(波導的效率私房)9

如果你沒有這種專業工具,手頭有個播放器,别太爛或者國産全家桶隻給廣告不給功能的,應該都有查看視頻信息的功能。拉下一來,找到這個ID就對了,這裡它是從1開始的,寫到腳本裡要減1。唉,編程裡的下标這個東西,不解釋了啊。

獲取ffmpeg支持的濾鏡(波導的效率私房)10

接下來就是見證奇迹的時刻啦,三連一波先走起來~

關鍵代碼部分我都給你标紅了,-map 0:0,第一個0指的是輸入文件,因為ffmpeg可以接受多個輸入(下一節就會講到),你要指定具體是哪個文件,隻有一個的話那肯定全是0。第二個0就是我剛才叫大家記下的,0就是我們視頻的軌道,對吧。

所以後面的-map 0:4也就好理解了,音頻軌道,不用我再多說了吧。

獲取ffmpeg支持的濾鏡(波導的效率私房)11

我一直說重封裝,重封裝,而不是轉碼,看了這張圖就知道為什麼了。重封裝的速度極快,就是一瞬間的事情,快到我根本來不及截圖,隻能把屏幕錄下來,再到錄像裡暫停。

2.15e 03倍是多少倍來着……

獲取ffmpeg支持的濾鏡(波導的效率私房)12

這個方法既可以解決部分設備不支持MKV的問題,剔除了不必要的音軌又可以節省空間,同時我寫給你們的都是批量處理的代碼,目錄下所有符合條件的文件一次性就全部弄好了。

别家音頻質量好?拿來用就是了

獲取ffmpeg支持的濾鏡(波導的效率私房)13

FFmpeg的音頻編碼部分我沒有仔細研究過,不過其他第三方庫的質量和速度更優秀,倒是挺有可能的,音頻這塊人家有另外的地盤兒。

那麼,如果想要用更優秀的第三方庫處理音頻,然後再用FFmpeg強大的功能把視頻和音頻合并封裝成文件,可以實現嗎?

獲取ffmpeg支持的濾鏡(波導的效率私房)14

當然可以。

為了通用性,我強烈建議大家讓音頻文件和視頻文件的文件名一樣,這樣不管有多少文件來,都是批處理點一下就搞定的事情。

這裡我有一個MP4文件,AAC的音頻編碼,然後假設我想要MP3格式的音頻,又不想用FFmpeg自帶的轉換,而是覺得第三方庫的質量和速度更好,怎麼操作呢?

很簡單,先轉出MP3文件來,确保文件名相同,再放到同個目錄下。

獲取ffmpeg支持的濾鏡(波導的效率私房)15

然後就是見證奇迹的時刻啦。

記得上一節跟大家談過,FFmpeg可以接受多個文件輸入吧,這裡就分視頻文件和音頻文件來輸入。

輸入之後,利用上一節學到的MKV封裝時,指定流的方式,用map指令來指定流。

先指定視頻文件的0軌,一般視頻0軌就是視頻軌。當然如果是手動打命令封裝,也不一定是0軌,具體的看文件,隻不過颠倒封裝順序沒啥意義就是了……

-map 1:0指定第二個文件為音頻文件,因為轉成了MP3,MP3隻有一軌,所以還是0。前面的1其實是輸入的文件順序,第2個文件(下标都要減1,從0開始)。

獲取ffmpeg支持的濾鏡(波導的效率私房)16

這麼一重封裝,光速完成,不錄屏了,反正重封裝是極快的~

可以看到,音頻已經由原來的AAC變成了MPEG,播放一下,完全沒有問題。

當然,不同格式的容器能接受的音頻不同,如果報錯那就是塞不進去,這個就要根據自己的需求嘗試了。

獲取ffmpeg支持的濾鏡(波導的效率私房)17

好,第二期的#波導的效率私房#就先到這裡了,搜遍全宇宙都找不到的幹貨,不值得你關注點贊收藏一波嗎?代碼文件我會放到網盤裡,自行取用即可。

感謝觀看,我們下期再見。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved