Xabe.FFmpeg 是一个强大的 .NET FFmpeg 封装库,可以帮助我们方便地进行视频处理。本文将详细介绍如何使用 Xabe.FFmpeg 实现视频的色彩校正功能,包括亮度、对比度、饱和度和色相的调整。
首先需要通过 NuGet 安装 Xabe.FFmpeg 包:
Bashdotnet add package Xabe.FFmpeg
下面是一个完整的示例,展示如何调整视频的基本色彩参数:
C#using System;
using Xabe.FFmpeg;
namespace App12
{
internal class Program
{
static async Task Main(string[] args)
{
FFmpeg.SetExecutablesPath("D:\\Software\\ffmpeg-master-latest-win64-gpl-shared\\bin");
await BasicColorCorrection("D:\\Video\\1.mp4", "D:\\1.mp4");
}
public static async Task BasicColorCorrection(string inputPath, string outputPath)
{
try
{
// 获取视频信息
IMediaInfo mediaInfo = await FFmpeg.GetMediaInfo(inputPath);
// 创建转换配置
IStream videoStream = mediaInfo.VideoStreams.First()
.SetCodec(VideoCodec.libx264); // 设置视频编码器
// 创建色彩校正滤镜
string filterOptions = "eq=brightness=0.1:contrast=1.2:saturation=1.3:gamma=1.0";
// 构建转换
IConversion conversion = FFmpeg.Conversions.New()
.AddStream(videoStream)
.AddStream(mediaInfo.AudioStreams.First()) // 保持原始音频
.AddParameter($"-vf \"{filterOptions}\"") // 使用 AddParameter 添加滤镜
.SetOutput(outputPath);
// 开始转换
await conversion.Start();
Console.WriteLine("色彩校正完成!");
}
catch (Exception ex)
{
Console.WriteLine($"处理过程中出现错误: {ex.Message}");
}
}
}
}

在视频处理中,旋转是一个常见需求。本文将详细介绍如何使用 C# 调用 FFmpeg 来实现视频旋转功能。我们将覆盖不同的旋转角度和实现方法,并提供完整的示例代码。
首先需要安装 FFmpeg,可以通过以下方式:
HTMLhttps://ffmpeg.org/download.html
在 Visual Studio 中创建 C# 项目,添加 NuGet 包:
BashInstall-Package Xabe.FFmpeg
Xabe.FFmpeg 是一个优秀的 .NET FFmpeg 封装库,可以帮助我们方便地处理音视频文件。本文将详细介绍如何使用 Xabe.FFmpeg 来生成视频缩略图。
首先需要通过 NuGet 安装 Xabe.FFmpeg 包:
XML<PackageReference Include="Xabe.FFmpeg" Version="5.2.6" />
确保系统中已安装 FFmpeg(Xabe.FFmpeg 依赖于 FFmpeg)
Xabe.FFmpeg 是一个优秀的 .NET FFmpeg 封装库,它提供了简单易用的 API 来处理音视频文件。本文将详细介绍如何使用 Xabe.FFmpeg 获取视频的元数据信息。
首先需要通过 NuGet 安装 Xabe.FFmpeg 包:
XML<PackageReference Include="Xabe.FFmpeg" Version="5.2.6" />

视频水印是保护版权、标识视频来源的重要技术。本文将详细介绍如何使用C#和FFmpeg为视频添加水印,并提供多种实现方式。
使用Package Manager Console安装:
PowerShellInstall-Package Xabe.FFmpeg
C#using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xabe.FFmpeg;
namespace App08
{
public class VideoWatermarker
{
/// <summary>
/// 为视频添加文字水印
/// </summary>
/// <param name="inputVideo">输入视频路径</param>
/// <param name="outputVideo">输出视频路径</param>
/// <param name="watermarkText">水印文字内容</param>
public async Task AddTextWatermarkAsync(
string inputVideo,
string outputVideo,
string watermarkText)
{
try
{
// 确保已设置 FFmpeg 执行文件路径
FFmpeg.SetExecutablesPath("D:\\Software\\ffmpeg-master-latest-win64-gpl-shared\\bin");
// 创建转换
IMediaInfo mediaInfo = await FFmpeg.GetMediaInfo(inputVideo);
// 配置转换参数
var conversion = FFmpeg.Conversions.New()
.AddStream(mediaInfo.VideoStreams)
.AddStream(mediaInfo.AudioStreams)
.AddParameter($"-vf \"drawtext=fontfile=msyh.ttc:" +
$"text='{watermarkText}':" +
"fontcolor=white:" +
"fontsize=24:" +
"box=1:" +
"boxcolor=black@0.5:" +
"boxborderw=5:" +
"x=(w-text_w)/2:" +
"y=(h-text_h)/2\"")
.SetOutput(outputVideo);
// 执行转换
await conversion.Start();
}
catch (Exception ex)
{
Console.WriteLine($"水印添加失败:{ex.Message}");
throw;
}
}
}
}
C#static async Task Main(string[] args)
{
VideoWatermarker watermarker = new VideoWatermarker();
await watermarker.AddTextWatermarkAsync("D:\\Video\\1.mp4", "d:\\output.mp4", "IDIOSOFT");
}