Я пытаюсь применить фильтр только к первым нескольким секундам видеоклипа и оставляю оставшуюся часть видео без изменений.
почему?Я получил несколько видеоклипов, которые я хотел разместить на веб-сайте - к сожалению, эти клипы начинаются с черного фона, который не соответствует дизайну сайта.Для этого я изменил фон на прозрачный.
Я получил этот фильтр, работающий со многими замечательными ответами здесь (спасибо Джану), и эти видео хорошо воспроизводятся в обычных браузерах:
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: я немного меняю тему, чтобы отразить актуальную проблему.