如何让mplayer从stdin播放?

ner*_*com 7 linux mplayer video tee stdin

为什么这不起作用?

cat /dev/video1 | mplayer -
Run Code Online (Sandbox Code Playgroud)

如果我可以让它工作,那么我可以使用“tee”同时播放和录制视频来提供 mplayer 和 mencoder。

我想播放实时视频(来自 /dev/video1:input=1:norm=NTSC)并同时录制而不引入延迟。

mplayer 播放视频很好(没有明显的延迟)。

mencoder 记录得很好。

但我不知道如何“tee”来自 /dev/video 的输出,以便我可以同时将其提供给两者。(我知道编码它的方法,然后立即播放编码的视频,但这会引入太多延迟)。

如果 mplayer 和 mencoder 会从 stdin 读取,那么我可以使用 'tee' 来解决这个问题。

我该怎么做?

[顺便说一句,我对任何可以同时播放和录制的解决方案都很满意,只要它不会增加延迟 - 我不喜欢 mplayer。但是先编码然后播放会增加延迟。]

Mik*_*obe 11

从 stdin 播放时需要给它一些缓存

cat /dev/video1 | mplayer -cache 1024 -
Run Code Online (Sandbox Code Playgroud)

如果没有该缓存选项,您将收到错误“搜索失败无法在线性流中向后搜索”


ner*_*com 0

8 年多后,我应该发布我找到的解决方案。

使用Python。AFAICT,仅使用标准 Linux 工具是不可能实现这一点的。

如果您正在阅读本文,最好不要再用头撞墙了。

非常粗略地说 - 使用 pygame (import pygame) 读取相机并显示视频,并使用 OpenCV (import cv2) 保存视频。这有效。