FFmpeg使用顯卡進行轉碼硬件加速的記錄,以及和軟壓的比較

1. 環境

操作系統:Windows 10
FFmpeg版本:20171204
顯卡:GTX 965M

2. 過程

最近是有比較多的壓制需求,使用libx265軟壓的速度實在是慢的受不了,所以還是希望能用顯卡硬壓起碼速度快一點。之前有人跟我提過硬壓質量似乎不及軟壓,但是決定還是試一試。在ffmpeg官網找到硬壓的相關信息
由于我用的是windows,所以驅動基本沒有特別配置。而且windows版的ffmpeg也是參數配置好的,所以這方面沒有考慮太多。linux平臺可能需要配置一下參數啥的。
壓制分為兩步,先是對視頻解碼再編碼。ffmpeg在兩步都提供了硬件加速方案。
在官網給出的例子是基于h264的,h265的硬件參數啥的可以用:

ffmpeg -codecs | sls cuvid (備注:sls是powershell的命令,類似于linux下的grep命令)

可以看到這條:

DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_cuvid ) (encoders: libx265 nvenc_hevc hevc_nvenc hevc_qsv )

解碼器提供了hevc, hevc_qsv, hevc_cuvid; 編碼器提供了libx265, nvenc_hevc, hevc_nvenc, hevc_qsv,但是這個nvenc_hevc其實已經作廢了,你用它的話他會提示你自動給你轉到hevc_nvenc
解碼器的這三個用法我是不太懂有啥區別,也沒去做太多研究,因為在實踐中使用硬解的話是沒辦法同時硬壓字幕的,會報錯,況且硬解對于整體壓制速度并沒有太大提升,所以就拋棄硬解了。
編碼器的部分,libx265就是軟壓,hevc_qsv似乎是英特爾的集顯硬壓,具體看這里。那么留給n卡的只有hevc_nvenc可以用了。
使用這條命令來查看該方法的參數:

ffmpeg -h encoder=hevc_nvenc

可以得到可用參數,我們這里探究的是-cq參數,給出的描述是:

-cq <float> E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)

我感興趣的原因是它和libx265,也就是軟壓的-crf參數很類似。所以接下來都是在其他參數不考慮的情況下對不同cq的對比。

3. 不同cq值的對比

我用的是諜影重重5的預告片壓制測試,原視頻數據如下:

Format                      : MPEG-4
Format profile              : QuickTime
Codec ID                    : qt   2005.03 (qt  )
File size                   : 35.6 MiB
Duration                    : 30 s 30 ms
Overall bit rate            : 9 938 kb/s
Encoded date                : UTC 2016-02-08 06:40:30
Tagged date                 : UTC 2016-02-08 06:40:30
Writing library             : Apple QuickTime 7.7.3

在使用命令
ffmpeg -i original.mov -c:v hevc_nvenc -cq X cqx.mp4
進行測試后。結果如下:
Libx265 (軟壓)

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 5.53 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 1 544 kb/s
Writing application         : Lavf58.2.103

-cq 0(默認)

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 8.21 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 2 290 kb/s
Writing application         : Lavf58.2.103

-cq 1

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 8.21 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 2 290 kb/s
Writing application         : Lavf58.2.103

-cq 10

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 8.21 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 2 290 kb/s
Writing application         : Lavf58.2.103

-cq 20

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 8.21 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 2 290 kb/s
Writing application         : Lavf58.2.103

-cq 30

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 8.20 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 2 286 kb/s
Writing application         : Lavf58.2.103

-cq 35

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 5.52 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 1 539 kb/s
Writing application         : Lavf58.2.103

-cq 38

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 4.06 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 1 132 kb/s
Writing application         : Lavf58.2.103

-cq 41

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 3.06 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 855 kb/s
Writing application         : Lavf58.2.103

-cq 51

Format                      : MPEG-4
Format profile              : Base Media
Codec ID                    : isom (isom/iso2/mp41)
File size                   : 1.41 MiB
Duration                    : 30 s 70 ms
Overall bit rate            : 392 kb/s
Writing application         : Lavf58.2.103

對比視頻在這里

4. 結論

可以看到cq在1到30的變化并不大,在41以上畫面基本上是沒辦法看了。在和libx265的默認軟壓對比后,-cq值落在35到40之間是比較好的選擇。
在后續的實際應用中,我在壓制畫面動作較少的視頻,如交響樂視頻的情況下,-cq 37是一個對于我來說比較好的選擇。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374