Как сделать длительность видео, то drawtext работать на слайдшоу?

у меня есть рабочий код для создания слайд-шоу из изображений с некоторыми эффектами плавного перехода:

ffmpeg -video_size 1280x720 
-loop 1 -t 2.5 -i ok/image-1.jpg 
-loop 1 -t 2.5 -i ok/image-2.jpg 
-loop 1 -t 2.5 -i ok/image-3.jpg 
-loop 1 -t 2.5 -i ok/image-4.jpg 
-loop 1 -t 2.5 -i ok/image-5.jpg 
-filter_complex 
"[0:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[pre]; 
 [0:v]drawtext=enable='between(t,0,5)':fontfile=/Library/Fonts/Arial.ttf:text='FIRST TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th[top0]; 
 [1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; 
 [1:v]drawtext='between(t,5,10)':fontfile=/Library/Fonts/Arial.ttf:text='SECOND TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th[top1]; 
 [2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; 
 [2:v]drawtext='between(t,10,15)':fontfile=/Library/Fonts/Arial.ttf:text='THIRD TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th[top2]; 
 [3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; 
 [3:v]drawtext='between(t,15,20)':fontfile=/Library/Fonts/Arial.ttf:text='FOURTH TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th[top3]; 
 [4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; 
 [4:v]drawtext='between(t,20,25)':fontfile=/Library/Fonts/Arial.ttf:text='FIFTH TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th[top4]; 
[pre][top0][0:v][b1v][top1][1:v][b2v][top2][2:v][b3v][top3][3:v][b4v][top4][4:v]concat=n=15:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

Как я могу сделать" первый текст "для отображения вместе с первым слайдом" ok/image-1.jpg " за все 5 секунд? Теперь он показывает только около 2 секунд и скрывает. Также есть возможность показать несколько текстов для первого слайда " ok / image-1.jpg"?

enable='between(t,0,5) не работает в течение всех 5 секунд.

3
задан kostya572
20.01.2023 10:31 Количество просмотров материала 2962
Распечатать страницу

1 ответ

Try

ffmpeg \
-loop 1 -t 6 -i ok/image-1.jpg \
-loop 1 -t 5 -i ok/image-2.jpg \
-loop 1 -t 5 -i ok/image-3.jpg \
-loop 1 -t 5 -i ok/image-4.jpg \
-loop 1 -t 5 -i ok/image-5.jpg \
-filter_complex \
"[0:v]drawtext=fontfile=/Library/Fonts/Arial.ttf:text='FIRST TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th,drawtext=fontfile=/Library/Fonts/Arial.ttf:text='AFTER FIRST TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th+100,split[pre][pbv0];[pbv0]fifo[bv0]; \
 [pre]fade=t=in:st=0:d=1[v0]; \
 [1:v]drawtext=fontfile=/Library/Fonts/Arial.ttf:text='SECOND TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th,split=3[pbv1a][pbv1b][v1];[pbv1a]fifo[bv1a];[pbv1b]fifo[bv1b]; \
 [2:v]drawtext=fontfile=/Library/Fonts/Arial.ttf:text='THIRD TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th,split=3[pbv2a][pbv2b][v2];[pbv2a]fifo[bv2a];[pbv2b]fifo[bv2b];\
 [3:v]drawtext=fontfile=/Library/Fonts/Arial.ttf:text='FOURTH TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th,split=3[pbv3a][pbv3b][v3];[pbv3a]fifo[bv3a];[pbv3b]fifo[bv3b]; \
 [4:v]drawtext=fontfile=/Library/Fonts/Arial.ttf:text='FIFTH TEXT':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th,split[pbv4][v4];[pbv4]fifo[bv4]; \
 [bv1a][bv0]blend=all_expr='A*T/0.5+B*(0.5-T)/0.5',trim=0:0.5[01v]; \
 [bv2a][bv1b]blend=all_expr='A*T/0.5+B*(0.5-T)/0.5',trim=0:0.5[12v]; \
 [bv3a][bv2b]blend=all_expr='A*T/0.5+B*(0.5-T)/0.5',trim=0:0.5[23v]; \
 [bv4][bv3b]blend=all_expr='A*T/0.5+B*(0.5-T)/0.5',trim=0:0.5[34v]; \
 [v0][01v][v1][12v][v2][23v][v3][34v][v4]concat=n=9,format=yuv420p[v]" -map "[v]" out.mp4

Я предположил, что вы хотите, чтобы текст присутствовал во время перекрестного затухания. Итак, я переосмыслил вашу команду. Все drawtexts должны быть приложены сперва и те выходы должны быть смешаны.

0
отвечен Gyan 2023-01-21 18:19

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх