В приведенном ниже коде я добавляю различные фильтры для каждого изображения.
Чтобы проиллюстрировать проблему, я удалил фильтр drawbox
из [2:v]
.
Вот видео из кода ниже: http://128.199.50.223/videos/super_user_test_10_temp.mp4
Вы заметите, что первый переход срезается на черный, прежде чем появится следующее изображение. Затем второй переход (с изображения 2 к изображению 3) перекрещивается. Однако, если я добавлю фильтр drawbox
обратно в [2:v]
он будет обрезан до черного цвета и исчезнет второй переход точно так же, как и первый.
Итак, мой вопрос состоит из двух частей:
- Почему коробка передач ломает перекрестное затухание и приводит к порезу черного цвета до появления затухания?
- Как я могу получить полупрозрачную рамку за текстом, сохраняя эффект перехода, который виден во втором переходе?
Вот код:
ffmpeg \
-i images/25_test/31630738_0.jpg \
-i images/25_test/31630738_4.jpg \
-i images/25_test/31630738_6.jpg \
-i images/25_test/31630738_8.jpg \
-filter_complex \
"[0:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=500:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Front':fontcolor=white:fontsize=24:x=20:y=16, \
fifo \
[zoom_0]; \
[1:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Kitchen':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+5/TB, \
fifo \
[zoom_1]; \
[2:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Entrance':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+10/TB, \
fifo \
[zoom_2]; \
[3:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Pool':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+15/TB, \
fifo \
[zoom_3]; \
[zoom_0][zoom_1]overlay=0:0:enable='between(t,5,15)'[overlay_0_1]; \
[overlay_0_1][zoom_2]overlay=0:0:enable='between(t,10,20)'[overlay_1_2]; \
[overlay_1_2][zoom_3]overlay=0:0:enable='between(t,15,25)' \
" videos/out.mp4
Ниже приведена упрощенная версия, которая все еще показывает проблему.
Чтобы проверить код, введите любые изображения 640x480.
Вы увидите разрез, затем исчезните.
Затем удалите фильтры drawbox
и вы увидите перекрестное затухание, как оно должно появиться.
ffmpeg \
-loop 1 -t 10 -i images/25_test/31630738_0.jpg \
-loop 1 -t 10 -i images/25_test/31630738_4.jpg \
-filter_complex \
"[0:v]format=yuva420p, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max \
[zoom_0]; \
[1:v]format=yuva420p, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+5/TB \
[zoom_1]; \
[zoom_0][zoom_1]overlay=0:0:enable='between(t,5,15)' \
" out.mp4
Дайте мне знать, если вам нужна дополнительная информация.
Спасибо!