FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
生活随笔
收集整理的這篇文章主要介紹了
FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現在的顯卡和兩年前已經不一樣。
從 NVIDIA 顯卡的能力表來看,新卡 1070 支持 x265 10bit 編碼。
正好最近有需求,來研究一下。
CPU也不一樣了,現在是 i7-8750H, 順便研究 intel 顯卡硬件編碼 x265。
FFMPEG 也不一樣了,現在可以支持更多編碼參數了。
2021-4-17 更新ffmpeg -codecs | sls cuvid 檢查ffmpeg是否支持 nvenc 轉碼ffmpeg -h encoder=hevc_nvenc 檢查 x265 nvenc 的可以使用的選項在同等文件大小情況下,仍然是CPU編碼的質量最好,但兩者差別不大。同時,碼率越高,CPU編碼和nvenc編碼兩者差別質量越少。 例如一部 13G 1080P 你的名字 藍光電影,分別使用 CPU 和 nvenc 壓到 3500K,兩者差別幾乎是肉眼不可分辨的。 簡單的速度比較 一段影片,i7 8750H; GTX 1070 hevc 編碼速度為 0.1X hevc_nvenc 編碼速度為 5.1X使用平均碼率控制模式,建議使用這個,因為這個比較方便調整輸出視頻大小ffmpeg -i 1.mkv -b:v 3500K -bufsize 6000K -maxrate 5000K -c:v hevc_nvenc -preset slow -pix_fmt p010le -profile:v rext -level 6.2 -tier high -rc vbr_hq -rc-lookahead 250 -2pass 1 -nonref_p 1 2.mkv 轉碼 1.mkv 到 2.mkv 設定 -b:v 3500K 視頻平均比特率為 3500K -bufsize 6000K 緩存區大小 6000K,建議設定為 當前碼率*幀率*5,也許這里的2pass是針對緩沖區的,緩存未來5s -maxrate 5000K 最大碼率為 5000K,每幀的最高碼率不超過這個數值 -c:v hevc_nvenc 使用hevc_nvenc 編碼器(nvidia硬件加速x265) -preset slow 預設方案是 slow,slow已經是最好的選項了 -pix_fmt p010le 輸出的像素格式是 p010le 也就10bit,只有新的硬件支持,例如:970m不支持,1070可以支持 -profile:v rext 設定 參考配置 為 rext,這個也是最好的選項 -level 6.2 設定編碼等級為6.2,這個也是最好的選項 -tier high 設定 tier 為 high,當前最好選項把 -rc vbr_hq 設定質量控制類型為 vbr_hq -rc-lookahead 250 前 250 幀作為碼率控制的參數(貌似沒用) -2pass 1 使用 2pass 編碼,但看不出什么差別,貌似沒用 -nonref_p 1 使用自動插入無引用的P幀,不知道干嘛的如果要8bit的編碼可以刪掉上面的 -pix_fmt p010le 參數 再執行。# 2021年4月后的FFMPEG ffmpeg -i .\1.mkv -b:v 4000K -bufsize 16000K -maxrate 8000K -c:v hevc_nvenc -preset p7 -tune hq -pix_fmt p010le -profile:v rext -level 6.2 -tier high -multipass 2 -rc-lookahead 1800 2.mkv 這個參數用來轉換9g h264的電影,可能會不錯ffmpeg.exe -i 1.mkv -b:v 2200K -bufsize 16000K -maxrate 3000K -c:v hevc_nvenc -preset p7 -tune hq -pix_fmt p010le -profile:v rext -level 6.2 -tier high -multipass 2 -rc-lookahead 1800 -c:a aac -b:a 128K .\2.mkv# 過時,2020年的FFMPEG ffmpeg -i .\1.mkv -b:v 4000K -bufsize 16000K -maxrate 8000K -c:v hevc_nvenc -preset slow -pix_fmt p010le -profile:v rext -level 6.2 -tier high -rc vbr_hq -rc-lookahead 1800 2.mkv 這個參數用來轉換9g h264的電影,可能會不錯使用固定qp模式,也就是固定質量模式,此時輸出文件大小不怎么好估計,不是很關心文件大小可以用這個ffmpeg -y -i 1.mkv -c:v hevc_nvenc -preset p7 -profile:v rext -level 6.2 -tier high -rc constqp -qp 23 -nonref_p 1 2.mkv 這里基本與上面相同,不同的是這里使用固定質量模式 -rc constqp 代表使用固定質量模式 -qp 23 使用固定質量等級為23
2020-12-7 更新ffmpeg -codecs | sls qsv 檢查ffmpeg是否支持 qsv 轉碼ffmpeg -h encoder=hevc_qsv 檢查 x265 qsv 的可以使用的選項目前不建議使用hevc_qsv編碼圖像,因為在同等文件大小下,hevc_nvenc 編碼的速度更快,并且質量更好。 簡單的速度比較 一段影片,i7 8750H hevc 編碼速度為 0.1X hevc_qsv 編碼速度為 1.1X使用平均編碼模式ffmpeg -i 1.mkv -b:v 3500K -bufsize 6000K -maxrate 5000K -vcodec hevc_qsv -preset slow -pix_fmt p010le -profile:v main10 2.mkv 轉碼 1.mkv 到 2.mkv 設定 -b:v 3500K 視頻平均比特率為 3500K -bufsize 6000K 緩存區大小 6000K,建議設定為 當前碼率*幀率*5,也許這里的2pass是針對緩沖區的,緩存未來5s -maxrate 5000K 最大碼率為 5000K,每幀的最高碼率不超過這個數值 -c:v hevc_qsv 使用 hevc_qsv 編碼器(intel硬件加速x265) -preset slow 預設方案是 slow,在我這里無法使用更高選項,但使用更高的選項會報錯 -pix_fmt p010le 輸出的像素格式是 p010le 也就10bit -profile:v main10 設定 參考配置 為 main10,有rext選項,但無法使用,因為會報錯如果要8bit的編碼可以刪掉上面的 -pix_fmt p010le 和 -profile:v main10 參數 再執行。 或者把對應參數改成 -pix_fmt nv12 和 -profile:v main ,效果和上面一樣。目前 hevc_qsv 不支持CQP編碼模式
總結
以上是生活随笔為你收集整理的FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java api 操作 kubernet
- 下一篇: 简单实现 单双层车牌颜色 识别