我有一个程序,可以每 2 秒从视频中提取 1 帧图像,我使用的是 MediaToolkit,但由于它已经多年没有更新,它越来越无法处理某些视频。
几个月前我切换到 FFMpegCore,它处理所有视频,但速度非常慢,几乎就像实时解析每个视频一样,因此处理一个视频可能需要 20 分钟。
有什么方法可以加快 FFMpegCore 的速度,或者有什么关于我可以使用的 nuget 包的建议吗?
提前致谢
这是我的 FFMpegCore 代码
for (double t = 0.0; t < duration; t += tSpan)
{
var outputFile = $"{recordId}_{recordIndex:000}{count:0000000}.jpg";
var outputFilename = $"{imageFolder}\\{outputFile}";
FFMpegArguments
.FromFileInput(localVideoFile)
.OutputToFile(outputFilename, false, options =>
options
.WithCustomArgument($"-ss {t}")
.WithCustomArgument("-vframes 1"))
.ProcessSynchronously();
count += 2;
}
EMGU CV
一个用于图像处理的包装库,它基于 OPEN CV
一个很好的 c++
库,速度非常快,可以处理 FFMPEG
https://emgu.com/wiki/index.php/Version_History#Emgu.CV-4.8.0
另一个解决方案是使用 ffmpeg 库并创建小型 FFI 库作为桥梁并为您完成工作,并在 C# 中使用它来保存这些图片
如果这些解决方案都不适合您,也许您可能会考虑使用 GPU
solution