Delphi 如何将电影切成四分之一并在4台显示器上显示?

Delphi 如何将电影切成四分之一并在4台显示器上显示?,delphi,video,Delphi,Video,我想把显示器并排放在一起做一个大的显示 任何3x4的布局,等等,但是现在让我们坚持使用2x2 大概我必须打开视频文件,获取每一帧,将其分为4个部分,然后将每个部分写入一个具有合适标题的新视频文件 是否有任何FOSS组件或库可以帮助实现这一点,或者我必须自己编写代码 哦,顺便说一句,我也想对静止图像做同样的处理 更新:我可能需要很多,并且一直在考虑一个基于windows的控制器通过TCP/IP与一组嵌入式设备进行通信,每个显示器一个。我认为这与问题无关,但它可能会阻止人们寻找替代解决方案 更新:感

我想把显示器并排放在一起做一个大的显示

任何3x4的布局,等等,但是现在让我们坚持使用2x2

大概我必须打开视频文件,获取每一帧,将其分为4个部分,然后将每个部分写入一个具有合适标题的新视频文件

是否有任何FOSS组件或库可以帮助实现这一点,或者我必须自己编写代码

哦,顺便说一句,我也想对静止图像做同样的处理

更新:我可能需要很多,并且一直在考虑一个基于windows的控制器通过TCP/IP与一组嵌入式设备进行通信,每个显示器一个。我认为这与问题无关,但它可能会阻止人们寻找替代解决方案

更新:感谢所有的评论和问题。我可能需要驱动高达20x20的显示器,或者更进一步地考虑一下由21TFT制成的视频墙

如果只有一张魔术图形卡可以处理这个问题,那么这显然是一条出路

否则,我将有一个控制器PC,它允许用户选择视频文件,然后对它们进行适当的切片,并将每个部分发送到一个MCU,该MCU控制单个显示器。MCU将存储每个视频流的片段,然后控制器将通过TCP/IP发送一个短命令,告诉每个人开始播放它的视频X片段。这应该使它们保持同步,我想我必须这样做,这就是为什么最初的问题甚至没有解释,只是想问一下如何切片。

使用带有-vf选项的mencoder,并使用crop=b:h:x:y作为过滤器

通过这样做bxh=n次,您甚至可以从批处理文件生成所需数量的视频


对于静态图像,类似的解决方案是使用DirectShow使用-crop选项进行转换。您可以使用无限针T形三通和多个渲染器将视频图像的一部分渲染到不同的监视器,如下所示

一台PC可以支持的显示器数量取决于CPU和图形grunt

跨多台计算机同步不像通过TCP发送播放消息那么简单-这根本不起作用。我建议将一台计算机设置为同步主机,正常播放视频,每个同步从机将侦听并查找主机发送的时间码

视频编码也会影响有效同步的能力,因此不要使用任何帧内编码,MJPEG编解码器可能是一个不错的选择


图像覆盖必须基于每个渲染器进行,使用的方法取决于渲染器的选择。上面的示例使用EVR,因此可以使用IMFVideoMixerBitmap进行覆盖。

您可以使用ffmpeg-oe-mencoderbased-on-ffmpeg,如果您想编写代码来完成这项工作,您可以使用opencv来完成。

为什么不能将显示视频的窗口拉伸到四个监视器上?然后,您不必进行任何拆分。如果您控制视频窗口,请将视频窗口的左上角坐标设置为最左上角监视器的左上角,并将右下角坐标设置为最右下角监视器的右下角。。。因此,您的视频将被拉伸到所有显示器上,并且您让视频驱动程序为您进行分割。如果您将视频分割为多个视频,您将如何在播放它们时保持它们的同步?我的想法仅适用于一台具有多个屏幕/图形卡的计算机。如果你想做得更多,那就更难了。有很多产品可以做到这一点。它们被称为媒体服务器,不仅用于一系列屏幕,还用于LED屏幕、投影仪和灯光。简单的建议基本上就是我最初的建议。有关示例,请参见。输入不足。这是一个单一的视频,如在一个特定的视频,或任何视频,如一个用户会选择?输入类型是什么?是基于磁盘的文件还是流媒体?这是一个终端用户应用程序,还是只是一个特定用途的应用程序?你的速度要求是什么?这是需要在飞行中发生的事情,还是你可以有一个处理时间,然后播放视频?