Criando vídeo contendo texto animado usando o FFMPEG sozinho

5

Eu duvido que isso seja possível, mas estou tentando encontrar um caminho para

  1. dinamicamente processar texto e, em seguida,
  2. opcionalmente, animá-lo (movimento simples da esquerda para a direita) e, em seguida,
  3. compor o resultado na parte superior de outro vídeo.

Eu sei que o FFMPEG é poderoso, mas é possível gerar conteúdo dinamicamente assim usando o FFMPEG sozinho? O vídeo seria inserido, mas o texto teria que ser gerado inteiramente usando o FFMPEG.

    
por Bachalo 06.02.2015 / 17:31

1 resposta

8

Você pode usar o filtro de texto .

texto dinâmico

O texto pode ser alterado durante a codificação se você usar as opções textfile e reload :

  • textfile Um arquivo de texto contendo texto a ser desenhado. O texto deve ser uma sequência de caracteres codificados em UTF-8.

  • reload Se definido como 1, o arquivo de texto será recarregado antes de cada quadro. Certifique-se de atualizá-lo atomicamente, ou pode ser lido parcialmente ou até mesmo falhar.

Animar

O texto pode circular usando expressões nas opções x e y drawtext. Veja a documentação do texto de desenho para obter uma lista de constantes e funções.

Edição da linha do tempo

Alguns filtros, como o drawtext, suportam a enable opção , o que significa que você pode transformar o filtro desligado e ligado. Você pode ver com o que os filtros suportam a linha do tempo:

ffmpeg -filters

Exemplo

Se você tiver um vídeo de entrada que deseja sobrepor ao texto:

ffmpeg -i input -vf "drawtext=enable='gte(t,3)':fontfile=Vera.ttf:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" output
  • Isso ativará o filtro de texto de desenho após 3 segundos
  • Sempre que text.txt for atualizado, o texto será alterado
  • As palavras se moverão na tela da esquerda para a direita (eu sugo essas expressões, mas você entenderá)

Se você não tem vídeo de entrada e gostaria apenas de gerar o texto em fundo preto:

ffmpeg -f lavfi -i "color=color=black, drawtext=enable='gte(t,3)':fontfile=Vera.ttf:fontcolor=white:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" -t 5 output

Aqui, -t 5 especifica o tamanho total da saída. (Se não for especificado, a codificação será executada para sempre.) A cor da fonte é definida como branco para que o texto fique visível.

    
por 06.02.2015 / 22:11

Tags