在 Linux 上如何更好地将 ffmpeg 与 ASP.NET Core 结合使用?

问题描述 投票:0回答:1

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

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

  1. 使用
    ffmpeg
    控制台实用程序
  2. P/Invoke
    libavcodec
    库和其他库一起使用,
    ffmpeg
    使用

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

我已经进行了谷歌搜索,但没有针对 Linux 平台上的 C#/ASP.NET Core 的完善项目。其中一些适用于 C++ 和 Python,但不适用于 Linux/.NET Core 上的 C#。

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

我问你的做法,因为这是我第一次在Linux平台上使用C#进行视频转换/采样的经验。我已经在 Windows 平台上使用了

Expression Encoder .NET 库,但这是另一回事了,现在没有任何意义。

也许还有其他选择,但我目前看不到。我不喜欢第一个选项,因为可能会出现未处理的异常,因为具有这样的角色的

ffmpeg

成为 ASP.NET Core 后端的黑匣子。

c# linux asp.net-core ffmpeg libavcodec
1个回答
0
投票
我遇到了同样的问题,我基于

FFMPEG
创建了自己的最小包装器
FFmpeg.AutoGen
。包装器在 Linux 上运行良好,但这种方式需要更多时间来理解
FFMPEG
 库如何工作

不久前为了测试,我也通过

new Process()

创建了你的第一个选择。这种方式的伟大之处在于简单

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

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

© www.soinside.com 2019 - 2024. All rights reserved.