ffmpeg использует complex_filter с alphamerge только для части видео - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь применить фильтр только к первым нескольким секундам видеоклипа и оставляю оставшуюся часть видео без изменений.

почему?Я получил несколько видеоклипов, которые я хотел разместить на веб-сайте - к сожалению, эти клипы начинаются с черного фона, который не соответствует дизайну сайта.Для этого я изменил фон на прозрачный.

Я получил этот фильтр, работающий со многими замечательными ответами здесь (спасибо Джану), и эти видео хорошо воспроизводятся в обычных браузерах:

ffmpeg -i ${1} -filter_complex "[0]split[m][a];
[a]geq='if(lt(lum(X,Y),16),0,255)',hue=s=0[al];
[m][al]alphamerge,format=yuva420p" -c:v libvpx-vp9 -b:v 0 -crf 18 -an -auto-alt-ref 0 ${1}.webm

проблема сейчас: конечно, это заменяет все черные пиксели во время видео, что впоследствии приводит ко многим артефактам.Поэтому я ищу способ применить этот фильтр только к первым 5-ти секундным секундам.

Я думаю, что мне нужно второе разделение и обрезка или обрезка и фильтр concat с отметкой времени - но я могуне заставить его работать: (

ffmpeg -i ${1} -filter_complex "[0]split[f][s];
[f]trim=start=0,duration=5[ft];
[s]trim=start=6[st];
[st]split[m][a];
[a]geq='if(lt(lum(X,Y),16),0,255)',hue=s=0[al];
[m][al]alphamerge,format=yuva420p[mal];
[ft][mal]concat" -c:v libvpx-vp9 -b:v 0 -crf 18 -an -auto-alt-ref 0 ${1}.webm

/ edit: я немного меняю тему, чтобы отразить актуальную проблему.

1 Ответ

1 голос
/ 07 марта 2019

Используйте

ffmpeg -i ${1} -filter_complex "[0]split[m][a]; [a]geq='if(lt(lum(X,Y),16),0,255)',hue=s=0,drawbox=c=white:t=fill:enable='gte(t,6)'[al]; [m][al]alphamerge,format=yuva420p" -c:v libvpx-vp9 -b:v 0 -crf 18 -an -auto-alt-ref 0 ${1}.webm

Поскольку мы добавляем альфа-плоскость, она должна быть добавлена ​​ко всем кадрам. Мы просто хотим пропустить прозрачность после определенной точки, поэтому мы используем фильтр Drawbox, чтобы заполнить его белым, начиная с 6 секунд, а затем объединить с основным видео.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...