C # Mono запустить процесс с помощью команды pipe в Linux

1

В окнах довольно легко отправить трубку через cmd.exe, я просто пишу

.FileName = "cmd.exe"; а также

.Arguments = "d:\ifme\addons\ffmpeg\ffmpeg -i d:\Videos\sata.mp4 -pix_fmt yuv420p -f yuv4mpegpipe - 2> nul | d:\ifme\addons\x265\x265lo -p medium --crf 28 -f 523 -o d:\ifme\temp\video.hevc --dither --y4m -";

но в Linux (Ubuntu 14.04.1) я пишу:

.FileName = "/bin/bash";

.Arguments = "-c/home/anime4000/Desktop/ifme/addons/ffmpeg/ffmpeg -i/home/anime4000/Videos/sata.mp4 -pix_fmt yuv420p -f yuv4mpegpipe - 2>/dev/null |/home/anime4000/Desktop/ifme/addons/x265/x265lo -p medium --crf 28 -f 523 -o/home/anime4000/Desktop/ifme/temp/video.hevc --dither --y4m -";

Я получил ошибку FFmpeg которая не указана в команде...

Я использую метод создания файла:

System.IO.File.WriteAllText("cmd.sh", "/home/anime4000/Desktop/ifme/addons/ffmpeg/ffmpeg -i/home/anime4000/Videos/sata.mp4 -pix_fmt yuv420p -f yuv4mpegpipe - 2>/dev/null |/home/anime4000/Desktop/ifme/addons/x265/x265lo -p medium --crf 28 -f 523 -o/home/anime4000/Desktop/ifme/temp/video.hevc --dither --y4m -");

.FileName = "sh";

.Arguments = "cmd.sh";

Я получил ошибку, которая является файлом x265lo не существует, но файл был там с разрешением выполнения

Итак, как получить правильную команду pipe с С# Mono?

Примечание: x265lo - это 8-битная сборка BPP, x265hi - это 16-битная сборка BPP, поскольку содержит два x265 с разными BPP

Теги:
mono

1 ответ

1

(Извините, это должен быть комментарий, но у меня нет достаточной репутации здесь.)

Я не знаю, что неправильно, но вы должны определить, как Mono называет вашу оболочку, делая что-то вроде этого:

strace -fv -s4096 -e trace=execve /path/to/your/program args-to-your-program

После того, как вы это сделали, обновите свой вопрос соответствующими строками execve().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню