【发布时间】:2018-12-01 17:19:21
【问题描述】:
当我尝试使用 GPU 时 FFMPEG 在 opencv 上使用如下命令:
VideoCapture cap("rtsp link");
for(;;)
{
mat frame;
cap>>frame;
}
尽管编译了 FFMPEG 的 GPU 版本,但我在 nvidia-smi 上看不到任何输出。
我正在尝试让 FFMPEG 使用 GPU 来提高我的程序的速度。我从克隆this 获得了FFMPEG,并按照here 的步骤使其工作。
我已经使用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 以使用 GPU 版本的 FFMPEG。谢谢!
【问题讨论】:
标签: c++ opencv tensorflow video ffmpeg