编辑
2025-11-22
C#
00

画中画(Picture in Picture,简称PIP)是视频处理中常见的一种技术,允许在主视频上叠加另一个视频。本文将详细介绍如何使用 Xabe.FFmpeg 库在 C# 中实现画中画效果。

准备工作

安装 NuGet 包

首先,需要安装以下 NuGet 包:

  • Xabe.FFmpeg
  • Xabe.FFmpeg.Downloader
C#
Install-Package Xabe.FFmpeg Install-Package Xabe.FFmpeg.Downloader
编辑
2025-11-22
C#
00

前言

Xabe.FFmpeg 是一个强大的 .NET 视频处理库,提供了丰富的视频转换和处理功能。本文将详细介绍如何使用 Xabe.FFmpeg 实现视频的形状和大小变换。

准备工作

首先,安装 NuGet 包:

C#
Install-Package Xabe.FFmpeg

视频变换详细示例

缩放和拉伸

C#
using System; using System.Threading.Tasks; using Xabe.FFmpeg; using System.IO; namespace App15 { public class VideoResize { public VideoResize() { // 设置 FFmpeg 可执行文件路径 FFmpeg.SetExecutablesPath("D:\\Software\\ffmpeg-master-latest-win64-gpl-shared\\bin"); } public async Task ResizeVideo(string inputPath = "input.mp4") { try { // 1. 使用预定义尺寸缩放到720p var conversion1 = await FFmpeg.Conversions.New() .AddParameter($"-i {inputPath}") .AddParameter("-vf scale=1280:720") // 直接使用720p的分辨率 .SetOutput("d:\\output_720p.mp4") .Start(); // 2. 自定义精确尺寸缩放 var conversion2 = await FFmpeg.Conversions.New() .AddParameter($"-i {inputPath}") .AddParameter("-vf scale=1280:720") .SetOutput("d:\\output_custom.mp4") .Start(); // 3. 保持宽高比缩放 var conversion3 = await FFmpeg.Conversions.New() .AddParameter($"-i {inputPath}") .AddParameter("-vf scale=1280:-1") // 宽度固定,高度自适应 .SetOutput("d:\\output_proportional.mp4") .Start(); // 4. 更复杂的缩放,设置编码和质量 var conversion4 = await FFmpeg.Conversions.New() .AddParameter($"-i {inputPath}") .AddParameter("-vf scale=1280:720") .AddParameter("-c:v libx264") .AddParameter("-crf 23") .SetOutput("d:\\output_advanced.mp4") .Start(); // 5. 压缩同时缩放 (使用2K分辨率作为参考) var conversion5 = await FFmpeg.Conversions.New() .AddParameter($"-i {inputPath}") .AddParameter("-vf scale=2560:1440") // 2K分辨率 .AddParameter("-b:v 1000k") .SetOutput("d:\\output_compressed.mp4") .Start(); Console.WriteLine("视频缩放完成!"); } catch (Exception ex) { Console.WriteLine($"视频处理错误: {ex.Message}"); } } // 获取视频信息的方法 public async Task GetVideoInfo(string inputFile) { try { var mediaInfo = await FFmpeg.GetMediaInfo(inputFile); var videoStream = mediaInfo.VideoStreams.First(); Console.WriteLine($"视频时长: {mediaInfo.Duration}"); Console.WriteLine($"视频分辨率: {videoStream.Width}x{videoStream.Height}"); } catch (Exception ex) { Console.WriteLine($"获取视频信息错误: {ex.Message}"); } } // 额外的实用方法:检查文件是否存在 private void ValidateInputFile(string inputPath) { if (!File.Exists(inputPath)) { throw new FileNotFoundException($"输入文件不存在: {inputPath}"); } } } }

image.png

编辑
2025-11-22
C#
00

简介

音频均衡器(Equalizer)是音频处理中的重要工具,可以调节不同频率段的音量,用于改善音质或创造特定的音频效果。本文将详细介绍如何使用 Xabe.FFmpeg 实现音频均衡功能。

环境准备

首先需要安装必要的 NuGet 包:

XML
<PackageReference Include="Xabe.FFmpeg" Version="5.2.6" />
编辑
2025-11-22
C#
00

在视频处理中,降噪是一个非常重要的环节,可以有效提升视频质量。本文将详细介绍如何使用 Xabe.FFmpeg 实现视频降噪处理。

环境准备

首先需要安装必要的 NuGet 包:

XML
<PackageReference Include="Xabe.FFmpeg" Version="5.2.6" />

实现方案

基础降噪处理

下面是一个基础的视频降噪处理示例:

C#
using Xabe.FFmpeg; namespace App13 { internal class Program { static async Task Main(string[] args) { FFmpeg.SetExecutablesPath("D:\\Software\\ffmpeg-master-latest-win64-gpl-shared\\bin"); await BasicNoiseReduction("D:\\Video\\1.mp4", "D:\\1.mp4"); } public static async Task BasicNoiseReduction(string inputPath, string outputPath) { try { // Create a new conversion var conversion = FFmpeg.Conversions.New() .AddParameter("-i \"" + inputPath + "\"") // Add nlmeans noise reduction filter and other parameters .AddParameter("-vf nlmeans=s=2:p=7:r=15") .AddParameter("-c:v libx264") .AddParameter("-b:v 2000k") .SetOutput(outputPath); // Add progress handler conversion.OnProgress += (sender, args) => { var percent = (int)(Math.Round(args.Duration.TotalSeconds / args.TotalLength.TotalSeconds * 100)); Console.WriteLine($"转换进度:{percent}%"); }; // Start the conversion await conversion.Start(); Console.WriteLine("视频降噪处理完成!"); } catch (Exception ex) { Console.WriteLine($"处理过程中发生错误:{ex.Message}"); throw; } } } }

image.png

编辑
2025-11-22
C#
00

Xabe.FFmpeg 是一个强大的 .NET FFmpeg 封装库,可以帮助我们方便地进行视频处理。本文将详细介绍如何使用 Xabe.FFmpeg 实现视频的色彩校正功能,包括亮度、对比度、饱和度和色相的调整。

准备工作

首先需要通过 NuGet 安装 Xabe.FFmpeg 包:

Bash
dotnet 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}"); } } } }

image.png