linux - 如何在 Linux 中访问 "tee"/dev/video?

标签 linux video input-devices

如何“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/

相关文章:

c++ - 在 Linux 上使用 C++ 访问 Sony Playstation SixAxis Controller

linux - 我想复制文件中的一行并进行一些更改

ios - 使用swift在ios上分享 Assets 库视频

ios - HTML5 视频播放器在 iPad/iPhone 上不起作用

javascript - HTML5 视频中的当前时间和跟踪

linux - 在 linux wayland 上模拟鼠标运动

linux - ext3cow 还在开发中吗?

linux - 为什么 find -delete 比 rm -rf 快?

c - 在没有 lseek() 的情况下写入和读取 linux/proc/... 文件系统

keyboard -/dev/输入键盘格式