1. 環(huán)境
操作系統(tǒng):Windows 10
FFmpeg版本:20171204
顯卡:GTX 965M
2. 過程
最近是有比較多的壓制需求,使用libx265軟壓的速度實在是慢的受不了情连,所以還是希望能用顯卡硬壓起碼速度快一點示括。之前有人跟我提過硬壓質量似乎不及軟壓,但是決定還是試一試为严。在ffmpeg官網(wǎng)找到硬壓的相關信息敛熬。
由于我用的是windows,所以驅動基本沒有特別配置第股。而且windows版的ffmpeg也是參數(shù)配置好的应民,所以這方面沒有考慮太多。linux平臺可能需要配置一下參數(shù)啥的。
壓制分為兩步诲锹,先是對視頻解碼再編碼繁仁。ffmpeg在兩步都提供了硬件加速方案。
在官網(wǎng)給出的例子是基于h264的归园,h265的硬件參數(shù)啥的可以用:
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
其實已經(jīng)作廢了庸诱,你用它的話他會提示你自動給你轉到hevc_nvenc
捻浦。
解碼器的這三個用法我是不太懂有啥區(qū)別,也沒去做太多研究桥爽,因為在實踐中使用硬解的話是沒辦法同時硬壓字幕的朱灿,會報錯,況且硬解對于整體壓制速度并沒有太大提升聚谁,所以就拋棄硬解了母剥。
編碼器的部分,libx265
就是軟壓形导,hevc_qsv
似乎是英特爾的集顯硬壓,具體看這里习霹。那么留給n卡的只有hevc_nvenc
可以用了朵耕。
使用這條命令來查看該方法的參數(shù):
ffmpeg -h encoder=hevc_nvenc
可以得到可用參數(shù),我們這里探究的是-cq參數(shù)淋叶,給出的描述是:
-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參數(shù)很類似。所以接下來都是在其他參數(shù)不考慮的情況下對不同cq的對比煞檩。
3. 不同cq值的對比
我用的是諜影重重5的預告片壓制測試处嫌,原視頻數(shù)據(jù)如下:
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之間是比較好的選擇注暗。
在后續(xù)的實際應用中,我在壓制畫面動作較少的視頻墓猎,如交響樂視頻的情況下捆昏,-cq 37是一個對于我來說比較好的選擇。