c# - 在 Linux 上如何更好地将 ffmpeg 与 ASP.NET Core 一起使用?

标签 c# linux asp.net-core ffmpeg libavcodec

我有一个项目(Linux 上的 ASP.NET Core),其中有几个任务与视频文件中的视频转换和提取帧有关。

我考虑了两种可能的选择:

  1. 使用 ffmpeg 控制台实用程序
  2. P/Invokelibavcodec 库以及 ffmpeg 使用的其他库一起使用

第二个选项更难,而且可能非常不切实际,因为它提醒我开发新的包装器/库,而不是使用现成的产品。

我已经进行了谷歌搜索,但没有针对 Linux 平台上的 C#/ASP.NET Core 的完美项目。对于 C++ 和 Python 有一些好处,但对于 Linux/.NET Core 上的 C# NOT

我决定看看第一个选项,我认为它会更容易和实用。但是,也有一些薄弱的地方,会产生很多问题。我们理解(我想),使用第一个选项,最终开发人员应使用流程 fork 。因此,进程空闲和其他可能的问题可能存在问题......

我问的是你的实践,因为这是我在 Linux 平台上使用 C# 进行视频转换/采样的第一次体验。我已经在 Windows 平台上使用了 Expression Encoder .NET 库,但这是另外一回事,现在没有任何意义。

可能还有其他选项,但我目前看不到。我不喜欢第一个选项,因为可能存在未处理的异常,因为具有这种作用的 ffmpeg 成为 ASP.NET Core 后端的黑匣子。

最佳答案

我遇到了同样的问题,我基于 FFmpeg.AutoGen 创建了自己的 FFMPEG 最小包装器| .包装器在 linux 上运行良好,但这种方式需要更多时间来理解 FFMPEG 库如何工作

不久前为了测试,我还通过 new Process() 创建了您的第一个选项。这种方式的好处是简单

        Process process = new Process();
        process.StartInfo.FileName = "ffmpeg.exe";
        process.StartInfo.Arguments = "example arguments";
        process.Start();

您需要自己决定,但请记住 - 在 C# 中调用 C 函数是一件了不起的事情

关于c# - 在 Linux 上如何更好地将 ffmpeg 与 ASP.NET Core 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017103/

相关文章:

c# - 如何使用 EPPlus 创建具有多个系列的图表?

linux - 如何使用grep命令显示文件最后一个字段大于100k小于140k的条目

python - Linux:如何模拟接口(interface)上的传入数据包?

angular - XSRF antiforgery : Asp.Net Core 2 WebApi(不是 MVC)+ Angular 的单独服务器是可能的吗?

c# - 使用 javascript 或 C# 在 PDF 上绘图

c# - 如何将枚举发送到 python tcp 服务器?

c# - 需要 [Key] 属性的非实体类

linux - 进程间文件缓存

c# - 如何在 ASP.NET Core 中获取没有构造函数注入(inject)的注入(inject)服务的实例?

entity-framework - 如何在 Blazor 服务器端 Web 应用程序中扩展 IdentityUser