2015-10-07 90 views
4

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

该问题肯定存在于为文件编写器创建写入偏移量的avi复用器过滤器中。

回答

0

DirectShow多路复用器旨在完成会话后完成输出文件。由于许多原因,您不能附加到已经存在的文件,只是为了说明问题:多路复用器必须将新媒体类型与文件中存在的媒体类型进行比较,并进行流映射以决定是否追加。并不是说这是不可能的,他们根本就不会被这种用途所吸引。

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

+0

那么我现在正在用多图解决方案。虽然认为会有更简单的解决方案 –

1

对不起,但是将多个场景剪切到具有DirectShow的新文件的唯一方法是使用DirectShow Editing Services。祝你好运,这是非常错误的,很难掌握,很长一段时间被微软放弃。

+0

那么我有一部分工作现在操纵时间戳,但AVI头没有写。但我会看看编辑服务。 –