使用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("水印添加完成");
        }
    }
}

标签: none

添加新评论