有没有办法在命令中管道stdout / stdin?

时间:2013-12-11 03:14:58

标签: ssh stream pipe webcam vlc

或者更具体地说,是否有一种方法可以从一个命令中获取stdout,运行另一个命令,然后使用stdout作为下一个命令的stdin? 例如 cat file.txt | run_command | grep“foo”

对于为什么有人想要这样做,这似乎令人困惑。这是我想要做的:

我通过另一台计算机(遥控器)将网络摄像头送到我的本地计算机 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 -

这是行不通的,因为在我启动vlc之前,我必须在远程机器上“导出DISPLAY =:0.0”。因此,我试图在远程计算机上输出ffmpeg到vlc的输出,然后导出该ssh'session'的DISPLAY变量。 另外如果有另一种方法可以做到这一点(除了在远程机器上使用ssh来使用第一个命令)我也很乐意尝试它。(如果有办法做同样的事情,那么我也没有这么多我我会很感激信息,但这与问题并不相关)在此先感谢。 :)

1 个答案:

答案 0 :(得分:0)

要将source的输出作为输入传递给sink,因为run_command必须在sink运行之前结束:

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