硬件使用ffmpeg,OpenCV加速h264解码

时间:2012-10-18 10:32:00

标签: opencv ffmpeg h.264 hardware-acceleration decoder

我正在开发视频分析应用程序,我必须解码RTSP流以提供IplImage帧,然后将其输入我的分析管道。 现在,OpenCV VideoCapture结构允许我从RTSP流中提取帧(我认为它使用ffmpeg这样做),但性能不是那么好。它需要实时工作。

我也继续编写了自己的ffmpeg解码器。但就像OpenCv一样,使用RTSP流的性能并不好。丢弃了很多帧。但是,从本地文件解码工作正常。我仍在努力改进代码。

我需要帮助的是这个。首先,我可以在这里使用硬件加速解码来提高性能吗?我的应用程序应该是跨平台的,所以我可能需要使用Directx VA(windows)和VAAPI(linux)。如果是的话,那么在那里我可以学习如何在代码中实现硬件加速,特别是对于ffmpeg解码H264?

1 个答案:

答案 0 :(得分:0)

使用ffmpeg后端的VideoCapture不支持硬件加速。

我认为您可以将gstreamer用作后端的VideoCapture,您可以自定义管道并通过vaapi启用硬件加速。

我正在使用此管道:

rtspsrc location=%s latency=0 ! queue ! rtph264depay ! h264parse ! vaapidecodebin ! videorate ! videoscale ! videoconvert ! video/x-raw,width=640,height=480,framerate=5/1,format=BGR ! appsink