FFmpeg 硬件加速介紹

目錄

  1. 參考
  2. 硬件加速簡介
  3. FFmpeg 硬件加速各環(huán)境支持情況
  4. FFmpeg命令行工具使用硬件加速

1. 參考

2. 硬件加速簡介

使用專用硬件(通常集成到GPU)對視頻處理進行加速,比如解碼、編碼或filter等操作[1]。

優(yōu)點:

  • 比軟件處理速度快。
  • 減少CPU的負荷,更省電。
  • 避免數(shù)據(jù)拷貝。許多硬件解碼器能夠生成輸出到硬件設(shè)備(比如顯存)的surface,這意味渲染輸出之前不需要額外的數(shù)據(jù)拷貝。在某些情況下,它還可以支持硬件設(shè)備的surface輸入與編碼器一起使用,以避免在轉(zhuǎn)碼時候的數(shù)據(jù)拷貝。

缺點:

  • 硬件編碼器生成的輸出質(zhì)量通常比好的軟件編碼器低得多[1]。
  • 硬件加速方案依賴于各硬件和平臺的支持,沒有統(tǒng)一的方案。
  • 對于特定處理(比如編解碼)硬件加速的支持和更新迭代速度慢。

關(guān)于硬件加速的詳細介紹參見[2][3]。

3. FFmpeg 硬件加速各環(huán)境支持情況

硬件加速API在各系統(tǒng)和硬解環(huán)境的支持情況如下[1]。


hw_platform_api_available.PNG

FFmpeg實現(xiàn)的API的情況如下[1]。


ffmpeg_hw_accel.PNG

4. FFmpeg命令行工具使用硬件加速

  • -hwaccel選項啟用硬件解碼器。
    • 軟件解碼器會正常啟動,如果它檢測到一個硬件可解碼的流,將嘗試將所有重要的處理交給硬件。如果流在硬件中不可解碼,那么將自動使用軟件解碼。
  • -hwaccel_device選項指定特定的硬件設(shè)備(比如有多個顯卡可用)。
  • -codec:v選項設(shè)置特定的編解碼器,適用于外部包裝的編解碼器。
    • 通常將它們命名為codec_api(例如:h264_cuvid),要求事先知道編解碼器的名稱。
    • 如果不支持不會回退到軟件編解碼。
  • 硬件filter可以像其他filter一樣在filtergraph中使用。
    • 存在硬件filter與軟件filter支持的格式不同的情況,需要使用hwuploadhwdownload filter在硬件surface和內(nèi)存之間拷貝數(shù)據(jù)。

示例:
1. 使用NVENC進行h264編碼:

ffmpeg -s 1280*720 -i input_yuv -c:v h264_nvenc -pixel_format yuv420p -preset default output.mp4

2. NVEDC進行h264解碼

ffmpeg -hwaccel nvdec -i input.mp4 output_yuv
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容