Я пытаюсь написать фильтр ffmpeg, который берет два видео и смешивает их вместе так, что Y (яркость) первого из них становится красным каналом вывода, а Y второго - синим каналом вывода (зеленый просто устанавливается на нуль).
Другими словами, я хочу это: [v0] [v1] r = v0.y: b = v1.y: g = 0 [out]
1
1 ответ
0
Предполагая, что ваши входы YUV и вы хотите упакованный RGB, используйте
ffmpeg -i yr.mp4 -i yb.mp4 -filter_complex
"[0][1]mergeplanes=0x001000:gbrp,lut=g=0,format=rgb24" -c:v png out.mov
В 0x001000
первая пара 00
устанавливает первую плоскость (g в gbrp
) как первую плоскость первого входа, то есть яркость yr.mp4. Это случайно, так как позже г будет установлен в ноль. Затем 10
, который устанавливает вторую внешнюю плоскость на первую плоскость второго входа, т.е. яркость yb.mp4. Наконец, третья плоскость установлена на яркость первого входа. Затем лут-фильтр сбрасывает плоскость G в ноль. Фильтр формата добавлен, чтобы упаковать пиксели как общий формат rgb24
. Кодек PNG выбран так, чтобы сохранить кодирование RGB.