我正在尝试使用DirectShow实现一个剪切函数。基本上,当我试图通过设置开始和结束位置来削减一个序列时,它是有效的。但是现在我想从同一个源文件中删除第二个序列,并在第一个源文件的末尾直接写。因此,我再次设置开始和结束位置,然后重新启动图形,但是文件编写器过滤器覆盖了第一个裁剪。所以基本上我想知道怎么改变这个。
这个问题肯定存在于avi muxer过滤器中,它为文件编写器创建了写偏移量。
发布于 2015-10-07 10:35:24
DirectShow多路复用器的设计是为了在会话完成后最后确定输出文件。您不能附加到已经存在的文件,原因很多,只是为了给您一个:多路复用器必须比较新媒体类型和文件中现有的媒体类型,并进行流映射,以决定是否追加。这并不是不可能的,它们根本就没有缩进以供使用。
这里的解决方案,除了DES,另一个答案中已经提到的CPlusSharp,是一次写入输出,从多个段收集数据,并分别调整时间戳。您通常需要几个筛选图来完成任务,并以特定的方式在图之间传输数据。一个图形正在写入文件(一次),然后其他源图正在提供数据,例如,从已经编码的内容开始,不进行转码,然后另一个图形追加新的数据。
发布于 2015-10-07 09:46:01
对不起,但是使用DirectShow将不止一个场景剪成一个新文件的唯一方法是使用DirectShow编辑服务。祝你好运,它是一个非常多的错误,很难掌握,而且被微软抛弃了很长时间。
https://stackoverflow.com/questions/32984221
复制相似问题