c# - The `Process` does not start with the special characters in the process argument -
i can run ffmpeg.exe -i test.flv -f flv - | ffplay -i - in cmd, can't run in c# codes when "|" in argument.
this code works :
process process = new process(); process process .startinfo.filename = "ffmpeg.exe"; process process .startinfo.arguments =" -i test.flv " process .start(); but code not working :
process process = new process(); process process .startinfo.filename = "ffmpeg.exe"; process process .startinfo.arguments =" -i test.flv -f flv - | ffplay -i -" process .start(); i tried codes did not effect:
process process .startinfo.arguments =" -i test.flv -f flv - \| ffplay -i -" process process .startinfo.arguments =" -i test.flv -f flv - \\| ffplay -i -" process process .startinfo.arguments =@" -i test.flv -f flv - | ffplay -i -" process process .startinfo.arguments ="\" -i test.flv -f flv - \| ffplay -i -\"" please tell me how can run ffmpeg.exe -i test.flv -f flv - | ffplay -i - in c# codes.
piping output 1 command feature of shell in execute commands. in .net, using process class need use shell (usually cmd.exe) achieve same effect.
// expands `c:\windows\system32\cmd.exe` process.startinfo.filename = environment.expandenvironmentvariables("%comspec%"); // build command line passed cmd.exe process.startinfo.arguments = "/c ffmpeg.exe -i test.flv -f flv - | ffplay -i -" additionally, depending on use case, want wait process finish:
process.waitforexit(); and possible evaluate exit code
if (process.exitcode != 0) // convention only! usually, exit of 0 means error. ymmv. finally, note pipelines, exit code returned here exit code of last command (in case ffplay).
Comments
Post a Comment