我正在做一个项目,涉及到通过HDMI (索尼阿尔法A7 IV)捕捉相机输出,并通过激光/灯投影仪投射出来,但问题是进入投影仪的流应该延迟4分钟左右。(如果你在上午10点开始录音,它就会在上午10点04分回放,等等)它应该是捕捉和回放不间断的饲料一整天。
首先,我想使用FFplay显示来自HDMI捕获卡的DirectShow流(比如Elgato 4K60 Pro),并在“投影机屏幕”上打开FFplay窗口,但我无法找到任何方法手动添加延迟。我的第二个想法是记录到一个视频文件的实际提要,然后立即播放它的间隔(仍然使用FFmpeg+FFplay)。
还有其他的想法吗?
发布于 2022-09-28 02:55:59
我不知道这个主意会不会奏效,但你可以试一试。
我同意你的第二个想法。如果星号对齐,则可以使用穆克塞尔进行ffmpeg进程编码,而对破碎机使用ffplay进程解码。
其主要思想是在一天的视频片段结束后,由segment制作一个3分钟的视频片段(有些视频片段的时间比需要的延迟时间短4分钟)。这将为您提供可预测的视频文件列表,ffplay需要按顺序播放这些文件。因此,您可以相应地准备播放列表。
编码器部分应该类似于:
ffmpeg [fill dshow input here] -f segment -segment_time 180 -segment_format_options movflags=+faststart out%03d.mp4你可以选择任何你想要的编解码/格式。MP4/H 264可能是一个明智的解决方案,但如果您想要raw,也可以使用.nut格式(参见文档中的其他示例)。当您对它进行实验时,您可以启用-segment_list playlist.ffconcat来查看concat演示程序所期望的内容。
如果这个展览(这是一个艺术装置吗?)将运行24小时,然后您将有480个文件(假设3分钟段)。将所有这些文件名列在连接文本中,并在4分钟后开始播放,到那时,第一段就可以播放了。在播放过程中,ffmpeg每隔3分钟就会用预先安排好的文件名来存放新的片段。所以,你应该能够实现连续播放。
如果您正在对所有这些进行编程,则可能有一种方法可以使延迟播放自动化。有关串连主题的更多信息,请参见串连 wiki。
您确实需要小心磁盘空间,特别是如果您选择存储未压缩视频(.nut)。获取一个大型存储空间,或在一侧运行一个程序以删除消耗的段。
再说一次,我从来没有这样做过,所以我很可能会错过一些细节。但如果我是你,这将是我的第一次攻击。祝好运。
https://stackoverflow.com/questions/73848499
复制相似问题