6

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

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

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

4

1 回答 1

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
于 2020-07-17T02:37:48.900 回答