我正在开发一个视频分析应用程序,我必须解码一个RTSP流,以给出IplImage帧,然后这些帧被馈送到我的分析管道中。现在,OpenCV VideoCapture结构允许我从RTSP流中提取帧(我认为它使用了ffmpeg来实现),但性能并不是很好。它需要实时工作。
我还编写了自己的ffmpeg解码器。但就像OpenCv一样,RTSP stream的性能也不好。许多帧被丢弃。但是,从本地文件中解码可以很好地工作,但我仍在改进代码。
我需要帮助的是这个。首先,我可以在这里使用硬件加速解码来提高性能吗?我的应用程序应该是跨平台的,所以我可能需要使用Directx VA(windows)和VAAPI(linux).If是的,那么有什么地方可以学习如何在代码中实现硬件加速,特别是对于h264的ffmpeg解码?
发布于 2020-07-17 10:37:49
据我所知,使用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 ! appsinkhttps://stackoverflow.com/questions/12952624
复制相似问题