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