【发布时间】:2015-03-12 16:19:15
【问题描述】:
我对 OpenCV 的 VideoWriter 有一个奇怪的行为: 一段时间后(大约 2 到 5 分钟,35fps 1080i MJPEG 流,取决于录制的视频类型),OpenCV 停止写入我的文件,但保持打开状态,并且不给我任何关于发生了什么的线索(没有cv::exception 被捕获,没有断言,没有警告信息......什么都没有)。如果一切正常,我的程序会继续运行,当我关闭(干净)程序并打开视频文件时,它只包含 XXfirst 分钟的视频...... 这是一小段代码:
try{
m_writer1->write(mat1);
} catch (cv::Exception & e)
{
std::cout << e.what() << std::endl;
}
if (!m_writer1->isOpened())
{
std::cout << "writer1 got pissed off" << std::endl;
}
我在程序结束时干净利落地释放我的作家。知道会出什么问题吗? :/
【问题讨论】:
-
多次运行代码中的“XX”是否相同?
-
不,不是。。目前,为了暂时解决这个问题,我一直在关闭文件并每隔 5 分钟重新打开一个文件。在 1 小时的运行中,我得到大约 10-13 个文件,其中包含 4 到 5 分钟的视频。那时我正在流式传输由采集卡检索到的相对较暗且均匀的桌面背景。例如,当从移动的摄像机流式传输更多色彩和异构数据时,视频会在不到 3 分钟后停止,大约在 1:30 到 3 分钟之间。我怀疑这与在 jpeg 中压缩帧的能力有关..?
-
平台是什么?我不确定 writer 对象如何处理您放入其中的所有图像,但缓冲区或堆是否可能溢出?
-
我在 Python 中遇到了同样的问题,经过一段时间后,视频作者停止写入文件。