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