0

我正在尝试将大型 AVI 2.0(OpenDML 格式)文件拆分为较小的部分(在我的情况下小于 1GB),以便能够使用 VFW(avifil32.dll)打开这些部分。

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

一种选择是逐帧复制它。我在网上找到了一些例子,它们也是如此。但其中大多数使用 VFW,通常无法读取 2GB 以上的文件和 1GB 以上的 AVI 2.0 文件,因为最大 RIFF 部分大小为 1GB。

我需要 DirectShow 而不是 VFW。我很确定如果我尝试手动复制帧,我也会弄乱音频同步。

我正在寻找类似于 VirtualDub 对“直接流复制”所做的事情,它不会影响当前的压缩,只是拆分文件并创建正确的 AVI 索引。

4

2 回答 2

2

Avi 文件可以以多种不同的方式进行编码,具体取决于所使用的编解码器。Avi 是一个包装文件,而不是一种编码方法。这意味着实际上并没有一种简单的通用方法来使用 C# 拆分 avi 文件。

从头开始用代码来做这件事将是一项艰巨的任务。也就是说,您可以通过使用 mencoder 并从 c# 调用它来作弊 - 并不理想,但比尝试重新发明轮子更容易和更可靠。或者,有许多 ffmpeg c# 包装器可以让您访问 ffmpeg 工具(但我还没有找到一个不会出错的工具)

你到底想做什么?为什么需要 avifil32.dll 以及如何使用它?如果您只是想播放一个非常大的 avi 文件,还有其他选择。例如,试试 aforge.net。

于 2011-10-29T21:49:32.657 回答
1

mencoder可以为您拆分文件。另一种选择是ffmpeg

于 2009-11-25T18:12:37.613 回答