如何在Linux中“tee”/ dev / video?

时间:2013-10-20 08:02:00

标签: linux video input-devices

如何“开发”/ dev / videox设备的输出,以便两个程序可以同时使用实时视频流?

我想将/ dev / video1:input = 1:norm = NTSC的实时视频一次发送到两个程序(mplayer和mencoder),以便在mencoder录制的同时获得非滞后的实时视图

我知道如何从mencoder中获取刚刚编码的输出并播放它,但这会引入几帧的延迟(太多)。我被告知VLC可以做到这一点,但也不是没有明显的滞后。

我现在能做的最好的事情就是让mplayer将它播放到屏幕上,同时使用“avconv -f x11grab”从显示屏上抓取视频并对其进行编码。这有效(它不会增加延迟)但是从显示屏上抓取视频很慢 - 我最终得到的是10 fps而不是30 fps。

必须有一些简单的方法将“tee”/ dev / video1分成两个虚拟设备,因此mplayer和mencoder都可以同时读取它们(没有一个抱怨设备“忙”)。 / p> 那是什么意思?

1 个答案:

答案 0 :(得分:0)

不完全符合您的要求,但只需在一个程序中执行:GStreamertry gst-launch)。它适用于bash对输入/输出管道的视频流。

GStreamer的camerabin2插件可以毫无滞后地执行您需要的操作:播放流并录制它。虽然目前只能使用客户端代码,而不能使用gst-launch

如果你需要做一些更复杂的事情,例如编码和发送视频流,比如RTP网络协议,那么GStreamer确实有一个tee filter