Como cortar pausas do vídeo automaticamente
Um script de 30 linhas encontra as pausas da sua fala e entrega o vídeo sem elas, com imagem e voz sincronizadas. Dá pra rodar à mão ou pedir tudo ao Claude Code em português.
Quem grava vídeo falando sabe como é: respira, pensa, recomeça. Na edição, cada pausa vira um corte manual. Em um vídeo de um minuto são dezenas.
A boa notícia é que pausa é fácil de achar, porque é um trecho em que o áudio fica abaixo de um certo volume. Uma ferramenta gratuita, o ffmpeg, localiza todas e corta de uma vez.
Neste guia você vê o jeito manual, com um script que eu testei, e o jeito mais curto: pedir pro Claude Code fazer.
O resultado, em números
Testei o script abaixo em um vídeo vertical de 8 segundos, gravado falando, com cinco pausas. Depois do corte o vídeo ficou com 4,7 segundos: 3,3 s de pausa a menos. Rodei a detecção de novo no arquivo final e não sobrou nenhuma pausa maior que meio segundo. Imagem e voz continuaram sincronizadas (a diferença entre as duas faixas foi de 0,03 s).
Como funciona
São três etapas:
- Detectar. O filtro
silencedetectdo ffmpeg lista onde cada silêncio começa e termina. - Calcular o que fica. O script faz o inverso: com a lista de silêncios, monta a lista de trechos com fala.
- Recortar. Os filtros
selecteaselectmantêm só esses trechos, na imagem e no áudio ao mesmo tempo.
Existe um filtro pronto chamado silenceremove, mas ele mexe só no áudio. A imagem fica pra trás e o vídeo sai dessincronizado. Por isso o script corta imagem e áudio juntos.
Passo 1: instale o ffmpeg
No Mac, com o Homebrew:
brew install ffmpeg
No Windows, a forma mais simples é pedir ao próprio Claude Code (veja o fim deste guia): "instale o ffmpeg neste computador".
Confira se funcionou:
ffmpeg -version
Passo 2: veja onde estão as pausas
Antes de cortar, olhe o que o ffmpeg encontrou:
ffmpeg -i video.mp4 -af silencedetect=noise=-30dB:d=0.5 -f null -
Cada pausa aparece assim:
silence_start: 1.572896
silence_end: 2.408688 | silence_duration: 0.835792
Os dois números que importam são noise=-30dB, o volume abaixo do qual o ffmpeg considera silêncio, e d=0.5, a duração mínima em segundos para contar como pausa.
Passo 3: o script que corta
Salve este arquivo como cortar_pausas.py. Você precisa só do Python 3 e do ffmpeg:
#!/usr/bin/env python3
"""Corta as pausas de um vídeo. Uso: python3 cortar_pausas.py entrada.mp4 saida.mp4 [pausa_minima_em_segundos]"""
import re, subprocess, sys
entrada, saida = sys.argv[1], sys.argv[2]
pausa_min = float(sys.argv[3]) if len(sys.argv) > 3 else 0.5 # só corta silêncio maior que isso
folga = 0.08 # sobra nas bordas, pra não comer a primeira sílaba
limiar = "-30dB" # abaixo disso conta como silêncio
duracao = float(subprocess.run(
["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "csv=p=0", entrada],
capture_output=True, text=True, check=True).stdout)
log = subprocess.run(
["ffmpeg", "-hide_banner", "-i", entrada, "-af", f"silencedetect=noise={limiar}:d={pausa_min}", "-f", "null", "-"],
capture_output=True, text=True).stderr
inicios = [float(x) for x in re.findall(r"silence_start: (-?[\d.]+)", log)]
fins = [float(x) for x in re.findall(r"silence_end: ([\d.]+)", log)]
if len(fins) < len(inicios):
fins.append(duracao) # silêncio que vai até o fim do vídeo
manter, cursor = [], 0.0
for ini, fim in zip(inicios, fins):
if ini - cursor > 0.05:
manter.append((max(0.0, cursor - folga), min(duracao, ini + folga)))
cursor = fim
if duracao - cursor > 0.05:
manter.append((max(0.0, cursor - folga), duracao))
if not manter:
sys.exit("Não achei fala neste vídeo.")
expr = "+".join(f"between(t,{a:.3f},{b:.3f})" for a, b in manter)
subprocess.run(["ffmpeg", "-y", "-hide_banner", "-loglevel", "error", "-i", entrada,
"-vf", f"select='{expr}',setpts=N/FRAME_RATE/TB",
"-af", f"aselect='{expr}',asetpts=N/SR/TB",
"-c:v", "libx264", "-crf", "20", "-c:a", "aac", saida], check=True)
total = sum(b - a for a, b in manter)
print(f"{duracao:.1f}s -> {total:.1f}s ({duracao - total:.1f}s de pausa cortada)")
Rode assim:
python3 cortar_pausas.py gravacao.mp4 gravacao-sem-pausas.mp4
O terceiro argumento é opcional e muda a pausa mínima. Para cortar pausas de um quarto de segundo, por exemplo:
python3 cortar_pausas.py gravacao.mp4 gravacao-sem-pausas.mp4 0.25
O arquivo original não é alterado.
Como ajustar o corte
Os três números do começo do script decidem o resultado:
| Ajuste | Padrão | Quando mudar |
|---|---|---|
pausa_min |
0,5 s | Use 0,25 a 0,35 para um ritmo rápido de Reels. Use 0,8 ou mais para aula ou entrevista, onde a pausa faz parte do tom. |
limiar |
-30dB | Se o ambiente tem ruído de fundo, o ffmpeg não acha silêncio: suba para -25dB. Se você fala baixo e ele corta fala, desça para -35dB. |
folga |
0,08 s | Se estiver comendo o começo das palavras, aumente para 0,12. |
Problemas comuns
- Não cortou nada. Quase sempre é ruído de fundo ou música por baixo da voz. Suba o
limiarou grave sem música e coloque a trilha depois. - Cortou o começo das palavras. Aumente a
folga. - Imagem e voz fora de sincronia. Isso acontece quando só o áudio é cortado. No script, o corte vale para os dois, então não deve ocorrer. Se você adaptar o comando, mantenha
selecteaselectjuntos. - O arquivo ficou com cortes demais, seco. Aumente a
pausa_min. Um vídeo sem nenhuma respiração cansa quem assiste.
O jeito mais curto: pedir ao Claude Code
Se você já usa o Claude Code, não precisa copiar nada. Abra a pasta do vídeo e peça:
Tem um vídeo chamado gravacao.mp4 nesta pasta. Corte as pausas maiores que meio segundo, mantendo uma folga de 0,08 s em cada corte pra não comer o começo das palavras. Salve como gravacao-sem-pausas.mp4, não altere o original e me diga quantos segundos foram cortados.
Ele escolhe as ferramentas, escreve o script, roda e confere o resultado. O que muda é que você descreve o que quer em vez de montar o comando. O guia Como editar vídeo com Claude Code mostra a instalação e o primeiro pedido.
Depois de cortar as pausas, o passo natural é a legenda: veja legenda automática palavra por palavra.
Perguntas frequentes
Dá pra cortar pausas em vídeo com música de fundo?
Fica difícil, porque a música impede o ffmpeg de achar silêncio. O caminho mais confiável é cortar as pausas no vídeo só com a voz e colocar a música por cima depois.
O vídeo perde qualidade?
O script grava um arquivo novo com crf 20, uma qualidade alta para vídeo de rede social. Qualquer exportação recodifica o vídeo e perde um pouco, mas nessa configuração a perda costuma ser difícil de notar. Se quiser ainda menos perda, use crf 18.
Funciona com vídeo longo?
Funciona, e o tempo depende do computador. A detecção é rápida. A parte mais demorada é gravar o vídeo novo. Para vídeos de mais de meia hora, teste primeiro num trecho curto.
Preciso saber programar?
Não para usar. Você copia o arquivo, roda um comando e troca os números da tabela acima. Se preferir nem isso, peça ao Claude Code.
