我有一个项目(Linux 上的 ASP.NET Core),其中有几个任务与视频文件中的视频转换和提取帧有关。
我考虑了两种可能的选择:
- 使用
ffmpeg
控制台实用程序 - 将
P/Invoke
与libavcodec
库以及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/