WPF 和FFmpeg.AutoGen6.1视频水印工具(固定右下角显示)
使用WPF和FFmpeg.AutoGen 6.1开发一个为视频添加动态图片水印的工具时,你可以创建一个简单的界面,并使用C#代码实现相应的逻辑。下面是一个简单的示例,涵盖了基本的界面和代码:
首先,确保你已经将FFmpeg.AutoGen 6.1添加到你的项目中。你可以使用NuGet包管理器安装它。
请注意,下述代码仅为基本示例,你可能需要根据实际需求和FFmpeg的使用方式进行调整。确保你的项目中包含了FFmpeg.AutoGen 6.1,并根据你的系统配置正确的FFmpeg可执行文件路径。
<Window x:Class="WpfApp3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp3"
mc:Ignorable="d"
Title="视频水印工具" Height="350" Width="500">
<Grid>
<StackPanel Margin="10">
<TextBlock Text="视频文件路径:"/>
<TextBox x:Name="txtVideoPath" Margin="0,0,0,10"/>
<TextBlock Text="水印图片路径:"/>
<TextBox x:Name="txtWatermarkPath" Margin="0,0,0,10"/>
<Button Content="选择视频文件" Click="SelectVideoFile_Click"/>
<Button Content="选择水印图片" Click="SelectWatermark_Click"/>
<Button Content="开始添加水印" Click="AddWatermark_Click" Margin="0,10,0,0"/>
</StackPanel>
</Grid>
</Window>namespace WpfApp3
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void SelectVideoFile_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "视频文件|*.mp4;*.avi;*.mkv|所有文件|*.*";
if (openFileDialog.ShowDialog() == true)
{
txtVideoPath.Text = openFileDialog.FileName;
}
}
private void SelectWatermark_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "图片文件|*.png;*.jpg;*.jpeg|所有文件|*.*";
if (openFileDialog.ShowDialog() == true)
{
txtWatermarkPath.Text = openFileDialog.FileName;
}
}
private async void AddWatermark_Click(object sender, RoutedEventArgs e)
{
string videoPath = txtVideoPath.Text;
string watermarkPath = txtWatermarkPath.Text;
if (string.IsNullOrEmpty(videoPath) || string.IsNullOrEmpty(watermarkPath))
{
MessageBox.Show("请选择视频文件和水印图片");
return;
}
await Task.Run(() => AddWatermark(videoPath, watermarkPath));
}
private void AddWatermark(string videoPath, string watermarkPath)
{
// 在这里编写使用 FFmpeg 添加水印的代码
// 请确保你已经正确配置 FFmpeg.AutoGen,并且有 FFmpeg 的可执行文件
// 以下是一个简单的示例,你可能需要根据实际情况调整参数
string outputVideoPath = @"D:\SoftWare\FFmpeg\output.mp4";
string ffmpegPath = @"D:\SoftWare\FFmpeg\ffmpeg.exe"; // 请根据实际路径配置 FFmpeg 可执行文件路径
Process process = new Process();
process.StartInfo.FileName = ffmpegPath;
process.StartInfo.Arguments = $"-i {videoPath} -i {watermarkPath} -filter_complex overlay=W-w-10:H-h-10 {outputVideoPath}";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit();
MessageBox.Show("水印添加完成");
}
}
}