我想要 Raspberry Pi 流视频,所以我这样做:
raspivid ... -o - | nc -l -k 4242
但问题是管道或nc
, 正在缓存数据,直到有人连接为止。但我不想那样做。我想删除所有数据,直到有人连接为止。
答案1
您已经设置了一个侦听 TCP 套接字,该套接字要求客户端先进行连接,然后数据才能流动。但即使您设置了 UDP 套接字,您也可能最终让客户端在中流连接,而没有任何定义如何解释流的元数据。
如果您有一个经常且定期提供元数据的协议,您可以尝试 UDP 套接字。我的版本nc
没有该-k
选项,但我知道有(至少)两个不同的版本可用,因此我无法为您提供经过测试的命令行示例。
如果您想流式传输视频,您应该使用专门构建的软件。这是一个复杂的技术领域(也是一个复杂的法律领域,因为有很多专利),除非您传输简单的内容(例如 MJPEG),否则使用简单的解决方案(例如netcat
.
软件应用程序的一些示例可以从以下位置找到:视频网络,冰铸,露天开采, 或者红5。
其实读一些的文档raspivid
似乎您可以使用诸如xinetd
或提供的侦听器systemd
来处理传入连接,然后raspivid
在建立 TCP 连接后启动。您仍然无法获得任何流量控制或实时带宽管理,但在受控网络中您可能会令人满意地实现您的目标。