适用于C#/ .NET的Solid FFmpeg包装器

Jac*_*rdt 81 .net c# video ffmpeg video-processing

我已经在网上搜索了一段时间,为C#/ .NET提供了一个可靠的 FFmpeg包装器.但我还没有想出一些有用的东西.我发现了以下三个项目,但是所有这些项目都在早期的alpha阶段就已经死了.

FFmpeg.NET
ffmpeg-sharp
FFLIB.NET

所以我的问题是,是否有人知道更成熟的包装项目?
我不是在寻找带有工作队列等的完整转码引擎.只是一个简单的包装器,所以我不必进行命令行调用,然后解析控制台输出,但可以进行方法调用并使用eventlisteners进行操作.

请随意提及任何活跃的项目,即使它们在早期阶段仍然存在.

Ayd*_*din 22

这是我自己的包装:https://github.com/AydinAdn/MediaToolkit

MediaToolkit可以:

  • 将视频文件转换为各种其他视频格式.
  • 执行视频转码任务.
    • 选项配置:Bit rate,Frame rate,Resolution / size,Aspect ratio,Duration of video
  • 执行音频转码任务.
    • 选项可配置: Audio sample rate
  • 使用FILM,PAL或NTSC电视标准将视频转换为物理格式
    • 媒体包括:DVD,DV,DV50,VCD,SVCD

我正在更新它,欢迎您使用它,您也可以使用软件包管理器控制台进行安装.

PM> Install-Package MediaToolkit
Run Code Online (Sandbox Code Playgroud)


小智 11

在尝试了几个包装器之后,我选择了这个:FFmpeg自动生成C#/ .NET和Mono的不安全绑定.

它是FFmpeg命名空间中每个类的一组低级互操作绑定.也许不像使用真正的包装器那样方便,但IMO是在.Net中使用FFmpeg的最佳解决方案,如果你想做非平凡的事情.

优点:

  • 作品
  • 值得信赖 - 假设您信任FFMpeg本身,没有第三方包装代码来引入错误.
  • 它总是更新到最新版本的FFmpeg
  • 所有绑定的单个nuget包
  • 包含XML文档,但您仍然可以使用在线文档FFmpeg文档.

缺点:

  • 低级:您必须知道如何使用指向c结构的指针.
  • 最初需要一些工作才能使其正常工作.我建议从官方的例子中学习.

注意:此线程是关于使用FFmpeg API,但对于某些用例,最好只使用ffmpeg.exe的命令行界面.


小智 10

试试这个,我想我可能已经写了一些你可以用来做一个简单包装的东西.

http://jasonjano.wordpress.com/2010/02/09/a-simple-c-wrapper-for-ffmpeg/


小智 9

我使用过ASP.NET/Windows服务(.NET)应用程序中的FFmpeg.但我最终使用命令行,而没有解析控制台.通过使用它 - 我有一个简单的方法来控制 - 更新FFmpeg并在多个核心上运行多个转换.


Tom*_*uda 6

你可以使用这个 nuget 包:

我知道你问的是成熟的项目,但我还没有看到任何项目能满足我的期望,所以我决定自己做。您可以轻松地将转换排队并并行运行,将媒体转换为不同格式的方法,将您自己的参数发送到 ffmpeg 并使用当前进度解析来自 ffmpeg + 事件侦听器的输出。

Install-Package Xabe.FFmpeg

我正在尝试制作易于使用的跨平台 FFmpeg 包装器。

您可以在https://xabe.net/product/xabe_ffmpeg/找到更多信息

更多信息在这里:https : //xabe.net/product/xabe_ffmpeg/#documentation

转换很简单:

IConversionResult result = await Conversion.ToMp4(Resources.MkvWithAudio, output).Start();
Run Code Online (Sandbox Code Playgroud)

如果你想进步:

IConversion conversion = Conversion.ToMp4(Resources.MkvWithAudio, output);
conversion.OnProgress += (duration, length) => { currentProgress = duration; } 
await conversion.Start();
Run Code Online (Sandbox Code Playgroud)