使用.net c#从.mp4文件压缩并获取缩略图

时间:2019-11-20 06:01:44

标签: c# .net .net-core ffmpeg

我正在寻找如何压缩mp4文件并从该文件生成缩略图的方法,幸运的是,我找到了一种解决方案“ MediaToolKit” ,该解决方案非常适合缩略图生成,但不适用于压缩。

当前,我在做什么,我已经生成了.bat文件,其中包含FFmpeg的命令

ffmpeg -i%1 -an -crf 25 -vf fps = fps = 30,scale = 640x480%output.mp4

但这不是好东西,我想用C#编写一个程序,将视频,压缩并生成缩略图

有人对此有想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用FFMpegCore库。

Nuget: Install-Package FFMpegCore

安装软件包后,您必须从此处ffbinaries下载二进制文件。 要更改根目录路径,请使用以下命令:

public Startup() 
{
   FFMpegOptions.Configure(new FFMpegOptions { RootDirectory = "./bin" });
}

这些都引用到github vladjerca/FFMpegCore

进行压缩:

Startup();
string inputFile = @"yourVideoPath.mp4";
var encoder = new FFMpeg();
FileInfo outputFile = new FileInfo(@"newVideo.mp4");
var video = VideoInfo.FromPath(inputFile);
//track conversion progress
encoder.OnProgress += (percentage) => Console.WriteLine("Progress {0}%", percentage);
encoder.Convert(
      video,
      outputFile,
      VideoType.Mp4,
      Speed.UltraFast,
      VideoSize.Ld,
      AudioQuality.Low,
     true
     );

答案 1 :(得分:0)

经过大量搜索后,我发现MediaToolKit是最佳选择,因为 它提供了用于自定义命令的选项

通过自定义命令压缩视频 例如

  using (var engine = new Engine(@"C:\ffmpeg.exe"))
  {
     int crf = 23;
     string resolution = "960:720";
     string command = string.Format(@"-i {0} -vf scale={1} -c:v libx264 -preset 
     ultrafast -r 30 -crf {2} {3}", input, resolution, crf, output);

     engine.CustomCommand(command);
   }

要获取缩略图,它具有方法

engine.GetThumbnail() // it will take 3 arguments inputFile, outputFile, conversionOptions