Como posso gerar um vídeo a partir de um arquivo txt e uma imagem?


0

Digamos que eu tenha:

  • Um arquivo txt
  • Uma imagem de 1920 x 1080

Eu gostaria de gerar um video como isso onde o texto está rolando e o áudio é um dado MP3.

Eu estava cavando um pouco com o ffmpeg, mas sem sucesso.

Você pode ajudar?

Respostas:


2

Eu dei uma tentativa para a minha leitura favorita (3 parágrafos, envolto em 80 caracteres) :-)

lorem-ipsum-generator -l -p 3 -s 1 | fold -w 80 -s > TEXT

Em seguida, gere o vídeo:

ffmpeg -loop 1 \
       -i Blue-Planet-Earth-1920x1080.jpg  
       -vf drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:textfile=TEXT:y=h-200*t"  
       -t 8 output.mp4

Explicações :

  • loop infinito como temos apenas uma imagem (suporte a várias imagens em seqüência ou canalizada)
  • a imagem
  • a drawtext é bastante legível, animação feita com o uso de t
  • "-t 8" por 8 segundos de duração (no final)

O texto ultrapassa o limite superior e continua a rolar para cima.

Qualquer um pode agora gerá-lo.

(Obrigado ao FB!)


O que significa o FB?
llogan

FB é um vislumbre de Fabrice (bellard.org)
levif

1

Você pode usar o legendas filtrar com SubStation avançado avançado (ASS) legendas. Usando o /move tag permitirá que você role as legendas, fornecendo início e fim x, y coordenadas.

Vantagens sobre o drawtext filtro inclui mais opções de formatação e a capacidade de quebrar automaticamente o texto. A desvantagem é que o x, y As coordenadas não parecem ser capazes de referenciar a largura e a altura do texto, então você tem que fornecer manualmente valores apropriados no /move tag.

enter image description here
Captura de tela de legendas de rolagem

Exemplo de arquivo ASS feito com Aegisub :

[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None

[Aegisub Project Garbage]
Last Style Storage: Default

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,1,5,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\move(190,350,180,-90)}Draw subtitles on top of input video using the libass library.\NTo enable compilation of this filter you need to configure FFmpeg wit{\i1}h --enable-liba{\i0}ss. This filter also requires a build with libavcodec and libavformat to convert the passed subtitles file to ASS (Advanced Substation Alpha) subtitles format.

Exemplo ffmpeg comando:

ffmpeg -loop 1 -i image.jpg -i audio.mp3 -filter_complex "subtitles=scroll.ass" -c:a copy -shortest output.mkv
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.