使用C#执行ffmpeg命令

时间:2011-01-20 16:45:53

标签: c# ffmpeg

您可以告诉我如何在C#中对FFmpeg执行以下命令。

mkfifo temp1.a
mkfifo temp1.v
mkfifo temp2.a
mkfifo temp2.v
mkfifo all.a
mkfifo all.v
ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; } &
cat temp1.a temp2.a > all.a &
cat temp1.v temp2.v > all.v &
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
       -f yuv4mpegpipe -i all.v \
       -sameq -y output.flv
rm temp[12].[av] all.[av]

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用Process.Start命名空间中的System.Diagnostics方法。

答案 1 :(得分:0)

您可以从官方网站下载ffmpeg的可执行文件并将它们放在应用程序启动路径中,然后使用Process.Start()执行它们,然后根据您的参数传递参数需要。

实施例: -

exe路径 -     ffprobe.exe -hide_banner -show_format -show_streams -pretty {video_file}

private static string Execute(string exePath, string parameters)
{
string result = String.Empty;

using (Process p = new Process())
{
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = exePath;
    p.StartInfo.Arguments = parameters;
    p.Start();
    p.WaitForExit();

    result = p.StandardOutput.ReadToEnd();
}

return result;
}