我正在尝试将较大的AVI 2.0(OpenDML格式)文件拆分为较小的部分(在我的情况下低于1GB),以便能够使用VFW(avifil32.dll)打开部件。
实现这种分裂的最佳方法是什么(最好是在C#中)?
其中一个选项是逐帧复制。我在网上找到了一些例子。但是大多数都使用VFW,因为最大RIFF部分大小为1GB,因此一般不能读取2GB以上的文件和1GB以上的AVI 2.0文件。
我需要DirectShow而不是VFW。我很确定如果我尝试手动复制帧,我也会搞砸音频同步。
我正在寻找类似于VirtualDub所做的“直接流复制”,它不会影响当前的压缩,只需拆分文件并创建正确的AVI索引。
答案 0 :(得分:2)
Avi文件可以通过多种不同方式进行编码,具体取决于所使用的编解码器。 Avi是一个包装文件,而不是一种编码方法。这意味着使用C#分割avi文件并不是一种简单的通用方法。
从头开始编写代码将是一项重大任务。也就是说,你可以通过使用mencoder并从c#调用它来作弊 - 不理想,但比试图重新发明轮子更容易和更可靠。或者,有一些ffmpeg c#包装器可以让你访问ffmpeg工具(但我没有找到一个没有错误的地狱)
你到底在想做什么?为什么你需要avifil32.dll,你是如何使用它的?如果您只是想播放一个非常大的avi文件,那么还有其他选择。例如,尝试aforge.net。
答案 1 :(得分:1)
mencoder可split files为您服务。另一个选项是ffmpeg