所以我知道这是一个相当大的挑战,但是我想用FFmpeg库用c#写一个基本的电影播放器/转换器。但是,我需要克服的第一个障碍是在c#中包装FFmpeg库。我已经下载了ffmpeg,但无法在Windows上编译,所以我为自己下载了一个预编译版本。好的太棒了。然后我开始寻找C#包装器。
我环顾四周,发现了一些包装器,如SharpFFmpeg (http://sourceforge.net/projects/sharpffmpeg/)和ffmpeg-sharp (http://code.google.com/p/ffmpeg-sharp/)。首先,我想使用ffmpeg-sharp,因为它的LGPL和SharpFFmpeg是GPL。然而,它有相当多的编译错误。原来它是为mono编译器编写的,我试着用mono编译它,但不知道如何编译。然后我开始自己手动修复编译器错误,但遇到了一些可怕的错误,我想我最好不要去管它们。所以我放弃了ffmpeg-sharp。
然后我看了看SharpFFmpeg,它看起来就是我想要的,所有为我调用的函数。但是它的GPL呢?AVCodec.cs和AVFormat.cs文件看起来都像是avcodec.c和avformat.c .c的端口,我想我可以自己移植。这样就不必担心许可问题了。
但我想在开始编码之前弄清楚这一点。我应该:
或
首先,考虑到我对C++不是很在行,因为我很少使用它,但我知道足够多的东西。我认为#1可能是更好的选择,因为大多数FFmpeg教程都是用C++编写的,而且与使用c#相比,我对内存管理也有更多的控制。
你认为如何?另外,您是否碰巧有任何有用的链接(可能是教程)来使用FFmpeg?
发布于 2010-03-29 20:51:22
其他一些托管包装器,可供您查看
在.NET中编写自己的互操作包装器可能是一个既耗时又困难的过程。为互操作编写C++库有一些优点-特别是它允许您极大地简化C#代码的接口。但是,如果您只需要库的一个子集,那么在C#中进行互操作可能会使您的工作更轻松。
发布于 2017-09-27 15:30:17
您可以使用此nuget包:
Install-Package Xabe.FFmpeg
我正在努力使其易于使用,跨平台的FFmpeg包装器。
有关这方面的更多信息,请访问Xabe.FFmpeg
更多信息,请访问documentation
转换很简单:
var conversion = await FFmpeg.Conversions.FromSnippet.ToMp4(Resources.MkvWithAudio, output);
await conversion.Start();
https://stackoverflow.com/questions/2527963
复制相似问题