gpt4 book ai didi

if-statement - 如何在ffmpeg中使用带有混合过滤器的多个语句

转载 作者:行者123 更新时间:2023-12-04 22:56:49 24 4
gpt4 key购买 nike

下面的命令混合了 input2进入 input1使用 *if 的二进制文件以 between 为特色的表达式声明的t多变的。因此,output = input1 , 但使用 input200:00:03- 00:00:05 :ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*if(between(T, 3, 5), 0, 1)+B*if(between(T, 3, 5), 1, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv我的问题是在一组评估条件的情况下如何将这些链接在一起。我尝试了 +运算符,低于,但 input1不再一样了。它似乎被视频的多层扭曲。ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*if(between(T, 3, 5), 0, 1)+B*if(between(T, 3, 5), 1, 0)'+'A*if(between(T, 7, 9), 0, 1)+B*if(between(T, 7, 9), 1, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv如何在不产生视觉伪影的情况下将这些链接在一起?
这个问题是 Rotem's solution to my earlier question 的后续问题。 .

最佳答案

如果您只想要 [v1]在 [3, 5] 和 [7, 9] 之间,和 [v0]否则,请确保 B乘以 1在 {[3, 5], [7, 9]} 和 A 之间乘以 0在 {[3, 5], [7, 9]} 之间,反之亦然。
我们可以使用以下命令:

ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*not((between(T, 3, 5)+between(T, 7, 9)))+B*(between(T, 3, 5)+between(T, 7, 9))'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv

因为它只是 01 ,我们不必使用 if表达。
根据 Expression Evaluation文档:

between(x, min, max)
Return 1 if x is greater than or equal to min and lesser than or equal to max, 0 otherwise.


not(expr)
Return 1.0 if expr is zero, 0.0 otherwise.


  • (between(T, 3, 5)+between(T, 7, 9))评估为 1在 {[3, 5], [7, 9]} 范围内,计算结果为 0否则。
  • not(between(T, 3, 5)+between(T, 7, 9))评估为 0在 {[3, 5], [7, 9]} 范围内,计算结果为 1否则。
  • 关于if-statement - 如何在ffmpeg中使用带有混合过滤器的多个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71112625/

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