Freeswtich 錄像支持NVIDIA硬編解碼方案實施過程

 

背景:

FS一路對講/會議(720P),開啓錄像後,CPU佔用率達到20%,如果對講超過10路,CPU將超負荷。爲了降低CPU,利用顯卡進行硬編解碼。

 

分析原因:

Fs 默認使用libx264對視頻進行h264軟編解碼,開啓錄像後:

1.錄像線程使用軟編碼將視頻幀生成錄像文件。

2.視頻橋線程,由於開啓了通道(bugs),會將視頻幀軟編碼後,再發送給其他終端。

不開啓錄像時,FS不會進行編解碼,開啓錄像後,由於要進行視頻融合,進行了2次編碼,導致CPU飆升。

 

 

如何解決?

FS 使用ffmpeg4.1版本做音視頻方案,所以先了解ffmpeg.

FFMPEG 硬編碼方案 (N卡)

 

http://trac.ffmpeg.org/wiki/HWAccelIntro

 

1.瞭解FFmpeg各個平臺支持的硬件加速方案

 

2.針對h264編碼支持的硬件方案,這裏我們選擇兼容性比較好的NVENC NVDEC

 

  1. N卡 各個型號支持的硬件編解碼能力 (NVENC NVDEC)

https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

 

 

 

代碼實施過程

詳見下篇mod_av模塊支持硬編碼,這裏不再贅述。

 

結果前後對比

 

優化前20%

 

優化後4%