您可以告诉我如何在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]
提前谢谢。
答案 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;
}