我正在通过网络发送视频流,并且想使用 ssh 对其进行加密。下面这个解决方案有效:
在机器 1 上我运行
./capture | nc 192.168.1.65 5001
在机器2上我运行
netcat -l -p 5001 | mplayer -fps 30 -cache 1024 -
这给了我视频。
然而,尝试让机器 1 监听连接是行不通的:
在机器 1 上我运行
./capture | netcat -l 3333 -vvv
在机器2上我运行
netcat 192.168.1.85 3333 | mplayer -fps 31 -cache 1024 –
mplayer 告诉我:
MPlayer 1.2-4.2.1 (C) 2000-2015 MPlayer 团队
Playing –.
File not found: '–'
Failed to open –.
No bind found for key '0 '.
Exiting... (End of file)
write(stdout): Broken pipe
问题1:为什么反过来就不行
问题 2:我设置了 ssh 密钥,如何通过 ssh 发送视频流?
谢谢
答案1
问题1的答案:
mplayer 抱怨说,File not found: '–'
即使它应该读取标准输入。这与 netcat 或网络完全无关。问题在于命令行解释。如果只有一个破折号字符-
(十六进制代码 2D),则 mplayer 读取标准输入。但命令行包含字符–
(十六进制代码96)。这些角色的视觉相似性纯属巧合。
问题2的答案:
这是一个简单的用例,有大量的答案和示例如何通过 ssh 建立隧道。例如ssh隧道解释很好地介绍了如何使用 ssh 进行隧道传输。