首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python中的ffmpeg xstack布局

python中的ffmpeg xstack布局
EN

Stack Overflow用户
提问于 2022-06-22 19:58:17
回答 2查看 92关注 0票数 0

我想使用ffmpeg在网格中堆叠一个、n×n视频。例如: 4x4,10x10,12x12,.因为我有很多视频,所以ffmpeg命令是在python中生成的,然后按顺序处理。xstack过滤器需要一个布局,该布局是以这种方式形成的:

代码语言:javascript
运行
复制
xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2

对于很少有视频的布局,我手工编写了xstack过滤器,但对于60x60视频,这是不合理的。

如何在python中生成布局字符串,给出由相同行和列组成的网格?

EN

回答 2

Stack Overflow用户

发布于 2022-06-22 20:50:32

对于完全填充的网格,可以使用interleavetile筛选器来极大地简化filtergraph表达式。就像..。

代码语言:javascript
运行
复制
[0:v]...[3599:v]interleave=3600,tile=60x60

警告:这假设所有输入具有相同的框架和长度。如果输入帧不对齐,interleave可能会非常挑剔。

不过,我不知道这个链的性能如何与xstack相比。

票数 0
EN

Stack Overflow用户

发布于 2022-06-22 22:25:19

最后,我使用它为xstack过滤器生成布局字符串。尽管如此,它还是很混乱的:

代码语言:javascript
运行
复制
n =4

layout_col = ["h0"]
for i in range(n-2):
    current_col = "h" + str(i+1)
    current_col = layout_col[-1]+"+"+current_col
    layout_col.append(current_col)
layout_col.insert(0,"0")

layout_row = ["w0"] 
for i in range(n-2):
    current_row = "w"+str((i+1)*n)
    current_row = layout_row[-1]+"+"+current_row
    layout_row.append(current_row)
layout_row.insert(0,"0")

layout = []
for i in range(n):
    for j in range(n):
        comb =   layout_row[i] + "_" + layout_col[j] 
        layout.append(comb)
layout = "|".join(layout)
layout = "xstack=inputs="+str(n)+":layout="+layout

print (layout)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72721317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档