DirectShowvideo切割

我正在尝试使用DirectShow实现剪切函数。 基本上它工作时,我尝试通过设置开始和结束位置切割一个序列。 但是现在我想从同一个源文件中删除第二个序列,并在第一个剪辑结束时直接写入。 所以我再次设置开始和结束的位置,并再次启动graphics,但文件写入器filter覆盖第一次剪切。 所以基本上我想知道如何改变这一点。

问题肯定存在于为文件编写器创build写入偏移的avi复用器filter中。

DirectShow多路复用器设计用于在会话完成后完成输出文件。 你不能附加到已经存在的文件,原因很多,只是为了给你一个:多路复用器将不得不比较新的媒体类型与文件中存在的,并做流映射,以决定是否要追加。 这不是不可能的,他们根本就不会被这样的使用所淹没。

这里的解决方案,除了DES,CPlusSharp已经在其他答案中提到了,就是立即写输出,分别从多个段收集数据并调整时间戳。 您通常需要几个过滤器图来完成任务,以某种方式在图之间传输数据。 一个图形正在写入文件(一次),然后其他源图形提供数据,例如从已经编码的内容开始直接传递,而不进行转码,然后另一个图形追加新的数据。

我很抱歉,但使用DirectShow将多个场景剪辑成新文件的唯一方法是使用DirectShow编辑服务 。 祝你好运,这是非常错误的,很难掌握,很长一段时间被微软放弃。