以编程方式在栅格上相邻排列多部电影

时间:2018-01-05 15:25:39

标签: video

我正在寻找一种在光栅上播放一堆电影的方法。例如,假设我们有25部电影要在(5x5)矩阵上播放。我希望能够决定哪个电影在哪个时间段(电影在播放期间在光栅上跳转),所以我想要一些灵活性,这就是我想要以编程方式进行此操作的原因。有谁知道我怎么能做到这一点?我正在研究FFmpeg,但不是那里的专家。

非常感谢您对此有任何建议!

1 个答案:

答案 0 :(得分:1)

如果您希望能够实时或近乎实时地更改内容,那么这是一项非常棘手的要求。

以编程方式执行此操作的最简单方法是将每个视频单独流式传输到显示视频的平台,然后只需在显示屏上移动适当的每个影片。

这种方法的问题在于,您可能会发现大多数播放平台,例如:笔记本电脑浏览器,移动设备等将很难同时播放这么多视频。

如果此视频非常小且比特率较低,您可以这样做。

如果你真的只对其中一个视频感兴趣,那么人们会看到你可能只能流式播放两个视频 - 一个背景视频流,25个视频组合在一个网格中,还有一个额外的视频流一个网格的大小。您可以移动第二个视频的位置以适应背景视频中的一个网格位置。

如果这一切都不适合你,那么你可能不得不在服务器端进行视频操作 - 意识到实时或接近实时操作这么多视频将是处理器密集型的。

如果您可以提前处理视频,那么使用ffmpeg复合过滤器可能适合您。

ffpmeg过滤器允许您使用'-filter_complex'选项将视频组合到网格中。请参阅ffmpeg wiki中的两个示例:

在第二个注释中关于对齐零时间戳的注释:

  

请注意,帧是按时间戳顺序从每个输入视频中获取的,因此最好通过setpts = PTS-STARTPTS过滤器传递所有叠加输入,以使它们以相同的零时间戳开始,例如[0 :v] hflip,setpts = PTS-STARTPTS并[a]; [1:诉] setpts = PTS-STARTPTS并[b] [A] [b]的覆盖

这将产生你的网格但是对于整个视频 - 随着时间的推移你需要将视频分成几部分并更改ffmpeg参数以移动叠加层。