簡體   English   中英

將FFMPEG的GPU版本編譯為OpenCV

[英]Compile the GPU version of FFMPEG to OpenCV

當我嘗試通過以下命令在opencv上使用GPU FFMPEG時:

VideoCapture cap("rtsp link");

for(;;)
{
mat frame;
cap>>frame;
}

盡管編譯了FFMPEG的GPU版本,我在nvidia-smi上看不到任何輸出。

我正在嘗試讓FFMPEG使用GPU來提高程序速度。 我從克隆得到FFMPEG 和遵循的步驟在這里得到它的工作。

我已經使用nvidia-smi dmon -i 0驗證了結果,並且看到當我運行命令ffmpeg -c:v h264_cuvid -i test_video.mp4 test_output.mkv時, dec%增加。

然后,我編譯Opencv以使用啟用了GPU的FFMPEG,我通過從opencv運行getBuildInformation進行檢查:

Video I/O: 
DC1394 1.x: NO 
DC1394 2.x: YES (ver 2.2.4) 
FFMPEG: YES 
codec: YES (ver 58.20.103) 
format: YES (ver 58.17.100) 
util: YES (ver 56.18.102) 
swscale: YES (ver 5.2.100) 
resample: NO 
gentoo-style: YES 
GStreamer: NO 
OpenNI: NO 
OpenNI PrimeSensor Modules: NO 
OpenNI2: NO 
PvAPI: NO 
GigEVisionSDK: NO 
UniCap: NO 
UniCap ucil: NO 
V4L/V4L2: NO/YES 
XIMEA: NO 
Xine: NO 
gPhoto2: NO

我通過使用相同的ffmpeg交叉驗證(通過檢查版本號):

ffmpeg version N-91273-g67747c8 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
  libavutil      56. 18.102 / 56. 18.102
  libavcodec     58. 20.101 / 58. 20.101
  libavformat    58. 17.100 / 58. 17.100
  libavdevice    58.  4.101 / 58.  4.101
  libavfilter     7. 25.100 /  7. 25.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100

請告訴我如何編譯OpenCV以使用FFMPEG的GPU版本。 謝謝!

與FFmpeg無關,但建議您通過OpenCV API使用性能卓越的GPU功能。

假設您使用的是OpenCV 3.xx,則應使用特殊的OpenCV GPU Api進行視頻解碼。 從官方文檔中查看以下示例:

另外,預見到使用現代OpenCV 3.4.1和> = CUDA 9.0進行編譯和運行代碼的問題,請閱讀我對OpenCV的問題跟蹤器的評論以克服這些問題:

而且是的-它可以為您提供極大的視頻解碼/讀取速度。 絕對值得嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM