Criei uma ferramenta que gera vídeos com narração, legendas e BGM a partir de um único roteiro (YAML)
(github.com/kmg28801)Como eu era iniciante em edição de vídeo e levava meio dia para cada vídeo, automatizei o processo de edição com código.
A entrada é apenas um único YAML com narration / visual / callout descritos por cena.
Com uma única linha, python3 src/pipeline.py scenario.yaml config.yaml, sai um mp4 finalizado.
Pipeline (Python):
- Roteiro → narração TTS (say / Supertone / ElevenLabs intercambiáveis, com cache dos resultados)
- Distribuição automática do timing das legendas de acordo com a duração da narração; narração = legenda igual
- Renderiza legendas e callouts como PNG e aplica overlay (método escolhido porque este build do ffmpeg não tem libass/drawtext — acabou sendo até mais fácil controlar contorno em coreano e posição em pixels)
- Vídeos de celular gravados na vertical têm a proporção corrigida automaticamente com padding de fundo desfocado (16:9 ↔ 9:16 Shorts com uma linha no config)
- concat da narração + mixagem com BGM (corte automático da BGM para o fim do vídeo + fade → evita “cauda preta”)
- Ao fim da renderização, verificação automática de drift de duração e do brilho do último frame
É específico para vídeos com legendas faceless, e estou de fato gerando vídeos do meu canal no YouTube com esta ferramenta.
Limitações: as legendas não são sincronizadas palavra por palavra, mas por cena (distribuição proporcional ao número de caracteres).
E, como foi feito assumindo que este ambiente ffmpeg não tem libass, o método padrão é overlay de PNG.
O objetivo não é substituir um editor perfeito, mas tornar praticamente instantâneo o fluxo “roteiro → primeiro corte do vídeo” e eliminar o custo de produção repetitiva.
Smoke test (verificação do pipeline completo sem chaves, usando voz do macOS say):
python3 -m pip install -r requirements.txt
python3 demo/make_placeholders.py
python3 src/pipeline.py demo/scenario.yaml demo/config.yaml
MIT. Feedbacks são bem-vindos.
Ainda não há comentários.