Rolagem de DIREITA a ESQUERDA em ffmpeg / drawtext

0

Eu usei com sucesso a resposta desta pergunta: Faça um loop no texto que se limpe à esquerda para direito usando o filtro drawtext FFMPEG

Mas eu preciso mudar a direção de rolagem de DIREITA para ESQUERDA. Eu só fico preso tentando algumas opções, então estou esperando que alguém aqui possa ajudar ...

Obrigado antecipadamente!

    
por Ron Van Herk 15.01.2016 / 15:05

3 respostas

0

Adaptar a resposta no encadeamento vinculado:

-vf "drawtext=text=string1:fontfile=foo.ttf:y=h-line_h-10:x=w-(t-4.5)*w/5.5:fontcolor=white:fontsize=40:shadowx=2:shadowy=2"

A rolagem começará em t = 4,5s e um caractere rolará pela largura em 5.5 segundos.

Editar :

Este faz um loop.

-vf "drawtext=text='abcd':fontfile=bpmono.ttf:y=h-line_h-10:x=w-mod(max(t-4.5\,0)*(w+tw)/5.5\,(w+tw)):fontcolor=ffcc00:fontsize=40:shadowx=2:shadowy=2"
    
por 15.01.2016 / 16:52
1

Para mim, isso funciona (lendo texto de um arquivo de texto no windows):

-vf "drawtext=fontcolor=white:fontsize=40:fontfile='C\:\Windows\Fonts\arial.ttf':textfile='C\:\text.txt':reload=1:y=h-line_h-52:x=w-(mod(4*n\,w+tw)-tw/40)"

O mesmo, mas com uma caixa de plano de fundo:

-vf "drawtext=fontcolor=white:fontsize=40:fontfile='C\:\Windows\Fonts\arial.ttf':textfile='C\:\text.txt':reload=1:y=h-line_h-52:x=w-(mod(4*n\,w+tw)-tw/40),drawbox=y=ih-88:[email protected]:width=iw:height=48:t=max"

: D

    
por 20.09.2016 / 00:52
0

x=if(eq(t\,0)\,w\,if(lt(x\,(0-tw))\,w\,x-4))

É tudo sobre como definir o valor de x. Eu gosto da resposta de Mulvya, o que é bom se você quiser que o texto role pelo quadro de vídeo em um número fixo de segundos. No entanto, queria uma velocidade constante, independentemente da largura do vídeo.

Eu comecei com if(lt(x,(0-tw)),w,x-1)

A idéia era começar na largura do vídeo w e continuar diminuindo o valor de x até se tornar menor que 0-text_w. Neste ponto, o texto desaparece.

Mas não funcionou. O valor padrão para x é 0, precisei defini-lo como w no início. Então eu vim com isso -

if(eq(t,0),w,if(lt(x,(0-tw)),w,x-1))

x-1 era muito lento para o meu gosto, pois mudei para x-4.

Escape do, antes de usá-lo em seu comando x=if(eq(t\,0)\,w\,if(lt(x\,(0-tw))\,w\,x-4))

O oposto disso, a partir de LEFT e indo para a DIREITA seria

if(eq(t,0),(0-tw),if(gt(x,(w+tw)),(0-tw),x+4))
    
por 18.12.2016 / 18:43

Tags