Raspberry Pi 4上的H.265编码速度较慢



OpenCV在视频编码方面非常慢,比如每分钟20帧,(在8GB Pi4、256MB GPU内存、850MHz GPU时钟和2147MHz CPU时钟上(

我认为,将其线程化到一个核心用于拍摄帧,另一个用于保存到视频会有更好的性能,但我不知道如何做到

代码:

#include <opencv4/opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image;
VideoWriter video("outcpp.mp4", cv::VideoWriter::fourcc('H','V','C','1'), 30, Size(640, 480));
namedWindow("main");
VideoCapture cap(0);
while (1) {
cap >> image;
video.write(image);
imshow("main", image);
if ((char)waitKey(1) == 27)
break;
}
cap.release();
}

Manjaro ARM,带FFMPEG的OpenCV。

第一篇文章,如果有什么问题,请写信,谢谢

您可能还需要确保使用Pi支持的硬件视频编码,而不是在CPU 上压缩

多亏了Alan Birtles,Pi上的硬件编码比CPU编码快得多,对于需要的人来说,代码(更改在评论行中注明(:

编辑:RPi 4只有OpenMax和MMAL硬件加速。在FFMpeg上,看起来OpenCV不支持它们,所以,解决方案是使用更便宜的编解码器

#include <opencv4/opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image;
// Video format changed to '.mkv' and FourCC changed to X264
VideoWriter video("outcpp.mkv", cv::VideoWriter::fourcc('X', '2', '6', '4'), 30, Size(640, 480));
VideoCapture cap(0);
int i = 0;
// 'i' variable is only for recording 10 seconds, ignore it
while (i < 300) {
i++;
cap >> image;
imshow("main", image);
video.write(image);
}
cap.release();
video.release();
}```

最新更新