如何“tee”/dev/videox 设备的输出,以便两个程序同时使用实时视频流?
我想同时将来自/dev/video1:input=1:norm=NTSC 的实时视频发送到两个程序(mplayer 和 mencoder),以便在 mencoder 录制的同时获得无延迟的实时 View .
我知道如何从 mencoder 中获取刚刚编码的输出并播放它,但这会引入几帧的延迟(太多)。有人告诉我 VLC 可以做到这一点,但也不是没有明显的延迟。
我现在能做的最好的事情就是让 mplayer 在屏幕上播放它,同时使用“avconv -f x11grab”从显示器上抓取视频并对其进行编码。这行得通(它不会增加延迟)但是从显示器上抓取视频很慢 - 我最终得到大约 10 fps 而不是 30。
必须有一些直接的方法将/dev/video1“tee”到两个虚拟设备中,这样 mplayer 和 mencoder 就可以同时读取它们(没有一个提示设备“忙”)。
那是什么路?
最佳答案
不完全符合您的要求,但可以在一个程序中完成:GStreamer
( try gst-launch
)。它对视频流的作用类似于 bash
对输入/输出管道的作用。
GStreamer 的 camerabin2插件可以毫无延迟地做你需要的事情:既播放流又记录流。虽然目前它只能在客户端代码中使用,而不能在 gst-launch
中使用。
GStreamer 确实有一个 tee
filter如果您需要做一些更复杂的事情,例如通过 RTP 网络协议(protocol)编码和发送视频流。
关于linux - 如何在 Linux 中访问 "tee"/dev/video?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475163/