gpt4 book ai didi

ffmpeg - 如何配置 vlc/ffplay/cheese(或其他)以在我的 3 个网络摄像头之间自动循环/旋转?

转载 作者:行者123 更新时间:2023-12-04 23:32:39 24 4
gpt4 key购买 nike

我有 3 个网络摄像头,它们在 Ubuntu 18.04 中注册为/dev/video0、/dev/video1 和/dev/video2。这三个在 Cheese 和 ffplay 中都很好(但由于某种原因不是 vlc ......对于这个问题并不重要)。

我想要的是打开一个查看窗口,让图像自动从设备 0 移动到设备 1 再到设备 2 并每隔 X 秒回到 0,而无需关闭窗口或调整大小。

我认为最终的解决方案将来自创建一个假视频设备(比如说/dev/video3),用程序观看它并使用 ffmpeg 或其他命令行脚本来更改/dev/video3 的流。 (v4l2loopback 似乎很有希望)

不幸的是,我在这上面花了几个小时却一无所获。任何帮助,将不胜感激。

最佳答案

假设所有 3 个剪辑具有相同的属性,基本语法是

ffplay -f lavfi -i movie=filename="/dev/video0":f=v4l2,setpts=PTS-STARTPTS[v1];movie=filename="/dev/video1":f=v4l2,setpts=PTS-STARTPTS[v2];movie=filename="/dev/video2":f=v4l2,setpts=PTS-STARTPTS[v3];[v2][v3]overlay=enable='between(mod(t,15),10,15)'[v23];[v1][v23]overlay=enable='between(mod(t,15),5,15)'

这将显示 5 秒的 video0,然后是 5s 的 video1,然后是 5s 的 video2。

由 OP 编辑​​:使用这个建议,我能够让 4 台相机工作。
ffplay -f lavfi "movie=/dev/video0:f=video4linux2, setpts=PTS-STARTPTS [zero];movie=/dev/video1:f=video4linux2, setpts=PTS-STARTPTS [one];movie=/dev/video2:f=video4linux2, setpts=PTS-STARTPTS [two];movie=/dev/video3:f=video4linux2, setpts=PTS-STARTPTS [three];[one][zero]overlay=enable='between(mod(t,20),5,10)'[conn1];[conn1][two]overlay=enable='between(mod(t,20),10,15)'[conn2];[conn2][three]overlay=enable='between(mod(t,20),15,20)'[out]"

它定义了 4 个摄像头输入,然后执行 3 个视频片段。第一个视频片段采用凸轮 0 和 1,并将 1 覆盖在 0 之上(但仅持续 5-10 秒)。第二段覆盖凸轮 0+1 流上的凸轮 2(但仅在 10-15 秒内)。第三段将凸轮 3 覆盖在凸轮 0+1+2 的组合流上(但仅持续 15-20 秒)。每个流仅在循环中的“回合”期间显示(同样,0-5、5-10、10-15、15-20 的倍数),由 Gyan 建议的覆盖命令和 between+modulus 魔法控制。

关于ffmpeg - 如何配置 vlc/ffplay/cheese(或其他)以在我的 3 个网络摄像头之间自动循环/旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53926617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com