.NET Core 5/6/7中MP4转GIF实现求助(原.NET Framework方案已实现)
.NET Core 5/6/7 实现MP4转GIF方案
问题原因
你之前用的NReco.VideoConverter在.NET Framework中能直接运行,是因为该库的.NET Framework版本默认打包了FFmpeg二进制文件;但在.NET Core环境下,需要手动处理FFmpeg的依赖——要么通过NuGet自动引入对应平台的FFmpeg,要么手动下载并指定路径。
解决方案步骤
安装必要的NuGet包
首先安装核心库和FFmpeg依赖包:Install-Package NReco.VideoConverter Install-Package NReco.VideoConverter.FFmpeg第二个包会自动为当前平台(Windows/Linux/macOS)下载对应的FFmpeg二进制文件,无需手动配置路径。
调整代码实现
基本用法和.NET Framework类似,无需大改,若使用自动引入的FFmpeg,代码可直接复用(注意路径格式跨平台兼容,建议用Path.Combine):using NReco.VideoConverter; using System.IO; var inputPath = "input.mp4"; var outputPath = Path.Combine(Directory.GetCurrentDirectory(), "output.gif"); var converter = new FFMpegConverter(); // 可添加额外参数控制GIF质量、帧率、尺寸等 converter.ConvertMedia( inputPath, outputPath, Format.gif, new ConvertSettings { VideoFrameRate = 10, // 控制GIF帧率,降低可减小文件体积 VideoSize = "640x?" // 按比例缩放宽度,高度自动适配 } );手动指定FFmpeg路径(可选)
如果你不想用NuGet的FFmpeg包,可自行下载对应平台的FFmpeg二进制文件,然后在代码中指定路径:var converter = new FFMpegConverter(); converter.FFmpegToolPath = "/path/to/ffmpeg"; // Linux/macOS // converter.FFmpegToolPath = @"C:\ffmpeg\ffmpeg.exe"; // Windows converter.ConvertMedia(inputPath, outputPath, Format.gif);
注意事项
- 跨平台部署时,确保FFmpeg二进制文件与目标平台匹配(32/64位,Windows/Linux/macOS)
- 若部署到Linux,需给FFmpeg文件添加执行权限:
chmod +x ffmpeg - 可通过
ConvertSettings调整输出GIF的参数,比如帧率、分辨率、质量,平衡文件大小和效果
内容的提问来源于stack exchange,提问作者Miles Morales
相关产品推荐
相关产品推荐

