2013-12-11 5 views
0

Или, более конкретно, есть способ взять stdout из одной команды, запустить другую команду, а затем использовать stdout в качестве stdin для следующей команды? , например. cat file.txt | run_command | grep "foo"Есть ли способ передать stdout/stdin через команду?

Это может показаться пугающим, почему кто-то захочет это сделать. Вот что я пытаюсь сделать:

Я подаю веб-камеру на другом компьютере (удаленном) на свой локальный компьютер через ssh user @ remote ffmpeg -b 100k -an -f video4linux2 -s 320x280 -r 10 - i/dev/video0 -b 100k -f ogg - | vlc -

Я пытаюсь сделать обратный. Итак, отправьте фид с моей веб-камеры (локальной), чтобы отобразить на удаленной машине. Пробовал: ffmpeg -b 100k -an -f video4linux2 -s 320x280 -r 10 -i/dev/video0 -b 100k -f ogg - | ssh user @ remote vlc -

который не работает, потому что перед тем, как я должен «экспортировать DISPLAY =: 0.0» на удаленном компьютере, прежде чем я смогу запустить vlc. Поэтому я пытаюсь получить вывод из ffmpeg в vlc на удаленном компьютере ПОСЛЕ экспорта переменной DISPLAY для этого сеанса ssh. Также, если есть другой способ сделать это (помимо использования ssh на удаленной обработке для использования первой команды), я хотел бы попробовать его (также, если есть способ сделать то же самое, что не так сильно отстает Я был бы признателен за информацию, хотя это не имеет отношения к вопросу) Спасибо заранее. :)

+0

Вы можете попробовать обертывание вызов 'vlc' в скрипте, устанавливает '$ DISPLAY', хотя вам может понадобиться больше, чем' $ DISPLAY', настроенный для подключения к X-серверу в эти дни. –

+0

Можете ли вы попробовать 'ffmpeg -b 100k -an -f video4linux2 -s 320x280 -r 10 -i/dev/video0 -b 100k -f ogg - | ssh user @ remote "DISPLAY =: 0.0 vlc -" 'и посмотреть, работает ли он? Может понадобиться использовать xauth или другие вещи, прежде чем мы получим окончательный ответ, но сначала попробуйте это. –

+0

Это сработало! Потрясающие! Спасибо большое. – linuxfreak003

ответ

0

Чтобы передать выход из source в качестве вклада в sink, учитывая, что run_command должен заканчиваться до sink будет работать в вашем случае:

source | { run_command &>/dev/null; sink; } 
+0

Я пробовал эту и подобные варианты, но я не мог заставить ее работать через ssh. – linuxfreak003

+0

Nevermind Я просто получил его с: ffmpeg -b 100k -an -f video4linux2 -s 320x280 -r 10 -i/dev/video0 -b 100k -f ogg - | ssh user @ remote "{export DISPLAY =: 0.0 &>/dev/null; vlc -;}" – linuxfreak003

+0

для команды 'ssh', вы можете использовать команду [@Mark Plotnick] (http://stackoverflow.com/questions/ 20509855/там-A-путь к трубопрокатный стандартный вывод-STDIN-через-а-команда/20510260? noredirect = 1 # comment30661014_20509855). В этом случае нет необходимости использовать синтаксис '{}' и перенаправление. – jfs

Смежные вопросы