从正在写入的视频 .avi 文件中读取

Posted

技术标签:

【中文标题】从正在写入的视频 .avi 文件中读取【英文标题】:Read from video .avi file as it is being written 【发布时间】:2012-12-25 20:37:06 【问题描述】:

使用 python 我想监控一个 .avi 原始 RGB 视频文件,该文件在录制时被另一个进程写入硬盘。所以我需要的是反复给我磁盘上视频文件的当前最后一帧(或第 n 个最后一帧)的东西。

我已经尝试过使用 OpenCV,但是这只给了我一次当前的最后一帧,第一次到达最后一帧后对 QueryFrame 的任何进一步调用都不会返回更多图像。

所以基本上我在寻找类似this 的东西,但对于.avi 视频文件。此外,对我来说,跳过帧不是问题,每秒获得几个新帧就足够了。

【问题讨论】:

您是否完全关闭并重新打开所有资源OpenCV 使用循环的每次迭代?也许你正在遭受缓冲...... 你说得对,关闭再重新打开确实解决了问题,非常感谢! 我将从我的评论中创建一个答案,以便您可以将此主题标记为“已回答”。 【参考方案1】:

您必须在每次循环迭代结束时关闭.avi-文件,然后重新打开它。

编辑:艺术要求提供代码示例。在这里。

while True:
    with open("test.avi") as fh:
        get_last_frame()
    wait_or_do_whatever_you_want()

我不知道 OP 如何使用 AVI 格式,但这不是问题的一部分。

【讨论】:

您有示例代码来说明解决方案吗?

以上是关于从正在写入的视频 .avi 文件中读取的主要内容,如果未能解决你的问题,请参考以下文章

如何用opencv读取avi视频并在界面截图进行人脸检测

MATLAB对视频文件的读取与格式转换

opencv读取ENVI标准格式

如何在 OpenCV 2.4.3 中编写视频文件

opencv 怎样从MP4格式视频中读取一帧

day7 读取视频错误