一、需要将FFmpeg应用程序放到自己项目的根目录下
可在FFmpeg官网下载Windows可执行程序,然后将此应用程序放在程序根目录下
二、此处需要使用FFmpeg命令进行操作
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFmpeg文件转码
{
class Program
{
//转码后文件的路径
public static string playFile = @"C:\Users\...\Desktop\524.avi";
//需要转码的文件
public static string soureFile = @"C:\Users\...\Desktop\2.mp4";
static void Main(string[] args)
{
//转码文件命令
string para = $"ffmpeg -i 1.avi -c copy 700.mov";
RunProcess(para);
Console.WriteLine("完成!");
Console.ReadKey();
}
static void RunProcess(string Parameters)
{
//以下为调用FFmpeg应用程序
//创建进程实例
var p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "CMD";
//获取或设置指示是否将应用程序的文本输出写入 System.Diagnostics.Process.StandardOutput 流中的值。
p.StartInfo.RedirectStandardOutput = true;
//获取或设置指示是否将应用程序的错误输出写入 System.Diagnostics.Process.StandardError 流中的值。
p.StartInfo.RedirectStandardError = true;
//获取或设置指示应用程序的输入是否从 System.Diagnostics.Process.StandardInput 流中读取的值。
p.StartInfo.RedirectStandardInput = true;
//获取要传入的命令
p.StartInfo.Arguments = Parameters;
//获取或设置指示是否使用操作系统 shell 启动进程的值。
p.StartInfo.UseShellExecute = false;
//获取或设置指示是否在新窗口中启动该进程的值。
p.StartInfo.CreateNoWindow = true;
//启动进程
p.Start();
//写入应用程序流
p.StandardInput.WriteLine(Parameters);
Console.WriteLine("\n开始转码...\n");
//p.WaitForExit();
//p.Close();
}
}
}