我正在设计一个程序,它将从 DirectShow 兼容卡捕获视频到 AVI 文件。AVI 文件很可能一次被写入数小时。有没有办法在文件仍在写入时播放文件中的视频?如果是这样,我可以在包含我的剪辑的文件中定义起点和终点吗?播放完剪辑后,我将不再使用它,因此我不需要将其保存为新的 AVI 文件。保存单个帧捕获是实现此目的的更好方法吗?
问问题
488 次
1 回答
1
有两个问题。一种是索引表仅在图形停止时才写入文件(对于 AVI 和 MP4 都是如此)。另一个是文件阅读器使用 FILE_SHARE_READ 打开文件。
如果您将文件阅读器替换为与正在打开以进行写入的文件兼容的文件阅读器,则您需要按顺序访问文件中的块,而不需要索引。这对于 AVI 是可能的,但不推荐,并且需要更换解复用器。
替代方案:您可以分段捕获文件,使用 GMFBridge 之类的东西在不停止图形的情况下切换到新的输出文件。然后您可以访问以前的输出文件,但不能访问当前的输出文件。或者您可以使用非索引格式,例如 mpeg-2 PS。
G
于 2011-07-14T08:47:06.683 回答