2011-01-20 4 views
3

Привет, может кто-нибудь покажет мне, как вы выполните следующую команду против FFmpeg в C#.Выполнение команды ffmpeg с C#

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] 

Заранее спасибо.

ответ

1

Вы можете использовать метод Process.Start из System.Diagnostics пространства имен.

+0

Привет Грег, спасибо за возвращение ко мне. Я знаю, как выполнить exe-файл. Проблема в том, что я не понимаю, как выполнять команды, выполняете ли вы это как 1 аргумент в exe-файле или делите аргументы и вызываете exe несколько раз. Вот что я застрял. – Paul

0

Вы можете скачать исполняемые файлы ffmpeg с официального сайта и поместить их в путь запуска приложения, а затем выполнить их с помощью Process.Start() и после этого передать аргументы в соответствии с вашими потребностями.

Пример: -

ехе path- 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; 
} 
Смежные вопросы