windows QProcess 调用ffmpeg输入中文路径

FFMpegCore:.NET 中进行音视频处理解决方案

简介

FFMpegCore 是一个 .NET Standard 的 FFMpeg/FFProbe 封装库,用于轻松将媒体分析和转换功能集成到应用程序中。支持同步和异步调用。

安装和配置

第一步,老规矩,先安装

Install-Package FFMpegCore

FFMpegCore 库本身并不包含 FFmpeg 可执行文件,因此需要在你的应用程序中指定 FFmpeg 可执行文件的位置。你可以从 FFmpeg 官方网站 下载适合你操作系统的版本。

下载完成后,将 ffmpeg.exe(Windows)或 ffmpeg(Linux/Mac)放到一个文件夹中,并在代码中设置 FFmpeg 可执行文件的路径。

 // 设置全局选项
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = "./ffmpeg", TemporaryFilesFolder = "/tmp" });

// 或单独设置每次运行的选项
await FFMpegArguments
.FromFileInput(inputPath)
.OutputToFile(outputPath)
.ProcessAsynchronously(true, new FFOptions { BinaryFolder = "./bin", TemporaryFilesFolder = "/tmp" });

设置为资源或者始终复制到目录

 



或者通过创建 ffmpeg.config.json 文件来进行配置

{
"BinaryFolder": "./bin",
"TemporaryFilesFolder": "/tmp"
}

API 使用

使用 FFProbe 分析媒体文件:

var mediaInfo = await FFProbe.AnalyseAsync(inputPath);
// 或者
var mediaInfo = FFProbe.Analyse(inputPath);

使用 FFMpeg 转换媒体文件:

FFMpegArguments
.FromFileInput(inputPath)
.OutputToFile(outputPath, false, options => options
.WithVideoCodec(VideoCodec.LibX264)
.WithConstantRateFactor()
.WithAudioCodec(AudioCodec.Aac)
.WithVariableBitrate(4)
.WithVideoFilters(filterOptions => filterOptions.Scale(VideoSize.Hd))
.WithFastStart())
.ProcessSynchronously();

从流中转换或输出到流:

await FFMpegArguments
.FromPipeInput(new StreamPipeSource(inputStream))
.OutputToPipe(new StreamPipeSink(outputStream), options => options
.WithVideoCodec("vp9")
.ForceFormat("webm"))
.ProcessAsynchronously();
辅助方法

提供的辅助方法可以轻松完成常见操作。

  • ? 捕获快照
    var bitmap = FFMpeg.Snapshot(inputPath, new Size(, ), TimeSpan.FromMinutes(1));
    // 或将图像保存到磁盘
    FFMpeg.Snapshot(inputPath, outputPath, new Size(, ), TimeSpan.FromMinutes(1));
  • ? 捕获 GIF 快照
    await FFMpeg.GifSnapshotAsync(inputPath, outputPath, new Size(, -1), TimeSpan.FromSeconds());
  • ? 合并视频片段
    FFMpeg.Join(@"..\joined_video.mp4", @"..\part1.mp4", @"..\part2.mp4", @"..\part3.mp4");
  • ? 创建子视频
    FFMpeg.SubVideo(inputPath, outputPath, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds());
  • ? 将图片序列合并为视频
    FFMpeg.JoinImageSequence(@"..\joined_video.mp4", frameRate: 1,
    ImageInfo.FromPath(@"..\1.png"),
    ImageInfo.FromPath(@"..\2.png"),
    ImageInfo.FromPath(@"..\3.png"));
  • ? 静音视频文件
    FFMpeg.Mute(inputPath, outputPath);
  • ? 提取音频轨道
    FFMpeg.ExtractAudio(inputPath, outputPath);
  • ? 添加或替换音频轨道
    FFMpeg.ReplaceAudio(inputPath, inputAudioPath, outputPath);
  • ? 将图片与音频文件结合
    FFMpeg.PosterWithAudio(inputPath, inputAudioPath, outputPath);

总结

FFMpegCore 提供了一个强大的接口来在 .NET 中执行音视频处理任务,包括转码、裁剪、提取音频等操作。通过在项目中安装 FFMpegCore 库并配置 FFmpeg 可执行文件的路径,你可以轻松地在 C# 应用程序中实现各种音视频处理功能。



原文链接:,转发请注明来源!