Expressão DrawText FFmpeg no fontcolor

2

Estou tentando obter um texto desbotado. Eu estava esperando para poder fazer isso através da fontcolor e uma expressão - como esta

fontcolor='if(gt(n,44), [email protected], white)'

obviamente, isso não "esmaece", mas estava apenas testando para ver se ele poderia avaliar uma expressão e parece que o fontcolor não manipula expressões. Isso é uma declaração factual - que o fontcolor não consegue lidar com expressões?

Alguém sabe de uma maneira de diminuir o texto menos o encadeamento por quadro? Existe uma maneira de mascarar texto ou algo assim?

    
por Richie 29.10.2013 / 17:29

2 respostas

1

Infelizmente, você não pode usar expressões para a opção de cor de texto do filtro drawtext . Isso faz com que seja impossível diminuir o texto ou fazer qualquer coisa extravagante com facilidade.

O truque é usar um filtro blend como sugerido pelo LordNeckbeard e sobrepor o fluxo de vídeo original com o fluxo que contém as legendas. Algo assim para desaparecer em um subtítulo:

ffmpeg -y -i input.mp4 -filter_complex "[0:v] drawtext=fontfile=Fonts.ttf:text='test':x=100:y=50:fontcolor=white:fontsize=30 [subtitles]; [subtitles][0:v] blend=all_expr='A*(if(between(T,$start,$end),(T-$start)/($end-$start),1))+B*(1-(if(between(T,$start,$end),(T-$start)/($end-$start),1)))' [out]" -map '[out]' -map 0:a output.mp4

Aqui, $start e $end são as posições iniciais e finais de aumento gradual em segundos, respectivamente. O fluxo de áudio será retirado da entrada. Você pode copiá-lo com -c:a copy .

    
por 10.01.2014 / 20:08
0

O ffmpeg agora tem o parâmetro fontcolor_expr (visto na doação ffmpeg ) que você pode usar expressões em.

    
por 30.03.2017 / 11:42

Tags