#if-statement #ffmpeg
#if-оператор #ffmpeg
Вопрос:
ffmpeg -i input.mp4 -y -t 10 -vf drawbox=x=0:y=0:w=200:h=200:color='if(1==1,red,green)':t=fill output.mp4
Я попытался проверить, как я могу использовать оператор if для добавления цветного квадратного наложения на видео, но получил следующую ошибку.
Не удается найти цвет ‘if (1 ==1, красный, зеленый)’ [AVFilterGraph @ 000002d24a659440] Ошибка инициализации фильтра ‘drawbox’ с аргументами ‘x = 0: y = 0: w = 200: h = 200: color=if (1 ==1, красный, зеленый): t= fill’ Ошибка повторной инициализации фильтров! Не удалось внедрить фрейм в сеть фильтров: ошибка недопустимого аргумента при обработке декодированных данных для потока # 0:0
Ответ №1:
Согласно документации FFmpeg по вычислению выражений, равенство должно быть проверено с помощью eq(x,y)
, вот что говорится в документе:
eq (x, y) возвращает 1, если x и y эквивалентны, 0 в противном случае.
Это может быть для целей тестирования, но я должен упомянуть, что if(eq(1,1),red,green)
всегда будет возвращаться red
.
если (x, y, z) Вычислить x, и если результат не равен нулю, верните результат вычисления y, в противном случае результат вычисления z .