我正在尝试使用DirectShow实现剪切功能.当我尝试通过设置开始和结束位置来切割一个序列时,它基本上起作用.但现在我想从同一个源文件中删除第二个序列,并在第一个剪切结束时直接写入.所以我再次设置开始和结束位置并再次启动图形,但文件编写器过滤器会覆盖第一个剪切.
所以基本上我想知道如何改变这一点.
这个问题肯定存在于avi muxer过滤器中,它为文件编写器创建了写偏移量.
最佳答案 DirectShow多路复用器旨在在会话完成后完成输出文件的最终化.由于多种原因,您无法附加到现有文件,只是为了给您一个:多路复用器必须将新媒体类型与文件中存在的类型进行比较,并进行流映射以决定是否追加.它不是不可能的,它们根本不被用于此类用途.
这里的解决方案,除了DES,在另一个答案中已经提到的CPlusSharp,是立即写入输出,从多个段收集数据并分别调整时间戳.您通常需要多个过滤器图来完成任务,并以某种方式在图之间传输数据.一个图形是写入文件(一次),然后其他源图形提供数据,例如,从已编码的内容开始按原样传递,不进行转码,然后另一个图形附加新数据.