2010-05-09 73 views

回答

0

有没有真正简单的方法来做到这一点;我的建议是使用ffmpeg,或者通过使用C#封装来调用外部函数。似乎有几个ffmpeg的C#包装器(如this one),但它们似乎都处于不同的开发阶段,并且不是真正可用的。你唯一的选择可能是通过外部调用它。

+0

ffmpeg-sharp不完整且陈旧。你有没有成功?我发现Tao更好一些,但最终通过C++/CLI包装器直接调用它。 – 2010-05-09 22:17:22

+0

对于大多数事情来说,它本质上是无用的 - 就像我建议的那样,我最终使用了系统ffmpeg和管道进出。控制较少,但足以实现容器格式之间的简单转换。 – TkTech 2010-05-09 23:06:45

6

这取决于你的意思是“转换”。 3GP和AVI都是封装格式,所以你只是试图改变容器格式,还是你想重新编码流?

无论哪种方式,你应该看看ffmpegWindows info)。对于简单的情况(即您拥有文件,需要单个输出文件),您应该考虑在命令行(即System.Diagnostics.Process)上调用它,这很容易(并且不涉及任何授权问题)。如果您希望通过编程访问的libavcodec/libavormat,我高度建议跳过任何.NET包装库(他们都是在吸吮的不同状态; Tao是最好的,但是,这不是多说了),而是写一个C++/CLI包装。一旦我开始了解数据编组等问题,并想出如何构建它(Part 1, Part 2),它并不难。