DirectShow视频剪辑

时间:2015-10-07 05:09:43

标签: c++ windows video directshow

我试图使用DirectShow实现剪切功能。当我尝试通过设置开始和结束位置来切割一个序列时,它基本上起作用。但现在我想从同一个源文件中删除第二个序列,并在第一个剪切结束时直接写入。所以我再次设置开始和结束位置并再次启动图形,但文件编写器过滤器会覆盖第一个剪切。 所以基本上我想知道如何改变它。

这个问题肯定存在于avi muxer过滤器中,它为文件编写器创建了写入偏移量。

2 个答案:

答案 0 :(得分:1)

对不起,但使用DirectShow将多个场景剪切成新文件的唯一方法是使用DirectShow Editing Services。祝它好运,它非常麻烦,难以掌握,很长一段时间被微软抛弃。

答案 1 :(得分:0)

DirectShow多路复用器旨在在会话完成后完成输出文件的最终确定。由于多种原因,您无法附加到现有文件,只是为了给您一个:多路复用器必须将新媒体类型与文件中存在的类型进行比较,并进行流映射以决定是否追加。它不是不可能的,它们根本不被用于此类用途。

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