2009-11-25 46 views
0

我想在较小的部分(在我的情况下1GB)拆分一个大的AVI 2.0(OpenDML格式)文件,以便能够用VFW(avifil32.dll)打开部件。如何拆分AVI文件

什么是实现这种分裂(最好在C#中)的最佳方式?

其中一个选项是逐帧复制它。我在网上找到了一些例子,它们也是这样。但其中大部分使用VFW,因为最大RIFF部分大小为1GB,所以无法读取大于2GB的文件和大于1GB的AVI 2.0文件。

我需要DirectShow而不是VFW。我非常肯定,如果我尝试手动复制帧,我也会搞乱音频同步。

我正在寻找类似于VirtualDub与“直接流式复制”不会影响当前压缩的内容的东西,只是分割文件并创建适当的AVI索引。

+0

我发现一个很好的起点,使用DirectShow和一个简单的过滤器文件在 - > avi分离器 - > avi mux - >文件之间没有压缩过滤器之间。作为参考: http://social.msdn.microsoft.com/Forums/en-US/windowsdirectshowdevelopment/thread/ca127590-a35f-4928-a75f-785b4a4cae0f http://msdn.microsoft.com/en- us/library/ms779733%28VS.85%29.aspx – Vlad

回答

2

根据所使用的编解码器,Avi文件可以用许多不同的方式进行编码。 Avi是一个包装文件,而不是一种编码方法。这意味着使用C#分离avi文件并不是一种简单的通用方法。

从头开始编写代码将是一项重大任务。也就是说,你可以使用mencoder作弊并从c#中调用它 - 这并不理想,但比试图重新发明轮子更容易,更可靠。另外,还有一些ffmpeg c#包装可以让你访问ffmpeg工具(但我还没有找到一个不像地狱一样的东西)

你准备怎么做?为什么你需要avifil32.dll和你如何使用它?如果你只是想播放一个非常大的AVI文件,还有其他选择。例如,试试aforge.net。

+1

嘿,我问了这个问题已经2年了,同时我开始使用ffmpeg,所以不需要分割文件来解决VFW文件大小限制。我有我自己的ffmpeg包装,但我看到aforge.net也使用ffmpeg,所以我会检查它的实现是否比我得到的更好。感谢提示。 – Vlad

1

mencoder可以split files给你。另一种选择是ffmpeg

+0

谢谢,但我的意思是在代码中做,而不是外部应用程序。 – Vlad