我正在尝试使用ffmepg创建用于媒体文件转换的 .NET 包装器,这是我尝试过的:
static void Main(string[] args)
{
if (File.Exists("sample.mp3")) File.Delete("sample.mp3");
string result;
using (Process p = new Process())
{
p.StartInfo.FileName = "ffmpeg";
p.StartInfo.Arguments = "-i sample.wma sample.mp3";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
//result is assigned with an empty string!
result = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
}
实际发生的是 ffmpeg 程序的内容被打印到控制台应用程序,但result
变量是一个空字符串。我想以交互方式控制转换进度,因此用户甚至不必知道我正在使用 ffmpeg,但他仍然知道转换进度的详细信息以及应用程序的百分比等。
基本上,我也会对 P/Invoke 到转换函数的 .NET 包装器感到满意(我对整个外部库不感兴趣,除非我可以从中提取 PI 函数)。
任何有 ffmpeg 和 .NET 经验的人?
更新 请查看我的进一步问题,如何将输入写入正在运行的 ffmpeg 进程。