1,下载ffmpeg ,并设置环境变量。
ffmpeghttps://www.gyan.dev/ffmpeg/builds/
2.新建.net 9.0 winform
using System;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;
namespace WinFormsApp11
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void StartPreview()
{
Process previewProcess = new Process();
previewProcess.StartInfo.Arguments = " -i " + inputName + " -c:v " + bianma+ " " + outputName;
// ffmpeg -i demo.avi -c:v libx264 output.mp4
previewProcess.StartInfo.FileName = "ffmpeg.exe";
previewProcess.StartInfo.UseShellExecute = false;
previewProcess.StartInfo.RedirectStandardInput = true;
previewProcess.StartInfo.RedirectStandardOutput = true;
previewProcess.StartInfo.RedirectStandardError = true;
previewProcess.StartInfo.CreateNoWindow = true;
previewProcess.Start();
string output = previewProcess.StandardError.ReadToEnd();//很重要,不然不会自己退出
previewProcess.WaitForExit();
}
string inputName = "";
string outputName = "";
string bianma = "libx264";
private void button1_Click(object sender, EventArgs e)
{
button1.Visible = false;
inputName = textBox1.Text;
textBox2.Text = Environment.CurrentDirectory + "\\" + System.DateTime.Now.ToString("yyyyMMdd_HHmmss") +"_"+bianma+ "_output.mkv";
outputName = textBox2.Text;
Task.Run(() =>
{
StartPreview();
MessageBox.Show("转换完成");
button1.BeginInvoke(new MethodInvoker(delegate ()
{
button1.Visible = true;
}));
});
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
inputName = System.DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_input.avi";
outputName = System.DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_output.mkv";
textBox1.Text = inputName;
textBox2.Text = outputName;
}
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
// 设置对话框标题
openFileDialog.Title = "选择一个视频文件";
openFileDialog.Filter = "视频文件 (*.avi,*.mp4,*.mkv)|*.avi;*.mp4;*.mkv|所有文件 (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取用户选择的文件路径
inputName = openFileDialog.FileName;
textBox1.Text = openFileDialog.FileName;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.Text == "libx264") { bianma = "libx264"; }
if (comboBox1.Text == "libx265") { bianma = "libx265"; }
}
}
}
string output = previewProcess.StandardError.ReadToEnd();//很重要,不然不会自己退出
整个工程下载:
【免费】ffmpeg的视频格式转换c#win10资源-CSDN文库https://download.csdn.net/download/vokxchh/90947301