Communitygithub.com

iamaanahmad/ffmpeg-essentials

Receitas essenciais de FFmpeg e ffprobe para cortar, unir, converter, redimensionar, comprimir, alterar velocidade, fades, extrair áudio e converter para GIF. Use para qualquer tarefa direta de transformação de mídia ou quando um vídeo não toca, tem dimensões estranhas ou está fora de sincronia.

O que é ffmpeg-essentials?

Esta skill fornece um conjunto abrangente de comandos FFmpeg e ffprobe prontos para uso, cobrindo as operações mais comuns de manipulação de mídia. Ela inclui receitas para sondagem de arquivos, corte preciso (com ou sem recompressão), junção de clipes (com normalização automática), redimensionamento com preenchimento ou corte, compressão usando CRF e presets, alteração de velocidade com suporte a áudio, fades, extração e substituição de áudio, criação de GIFs animados e manipulação de sequências de imagens. Além disso, a skill oferece uma tabela de solução de problemas para erros frequentes (como 'height not divisible by 2' e problemas de compatibilidade com navegadores) e recomenda práticas de segurança para evitar sobrescrita acidental de arquivos. É ideal para desenvolvedores e profissionais que precisam automatizar transformações de vídeo/áudio em ambientes como Claude Code, Cursor ou Codex.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iamaanahmad/agents-video-editing-skills/tree/HEAD/skills/ffmpeg-essentials

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

FFmpeg Essenciais

Sempre sondar primeiro, nunca sobrescrever a entrada, e recompactar ao cortar, a menos que instruído de outra forma.

Sondagem

# Resumo humano
ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate,sample_rate -show_entries format=duration,size -of default=nw=1 input.mp4

# Legível por máquina
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

Corte

# Iniciar aos 30 s, manter 15 s. Recompactar: preciso e seguro.
ffmpeg -i input.mp4 -ss 00:00:30 -t 15 -c:v libx264 -crf 20 -c:a aac out/clip.mp4

# Rápido, sem recompactar. Apenas em keyframes, portanto o início pode estar com segundos de diferença.
ffmpeg -ss 00:00:30 -i input.mp4 -t 15 -c copy out/clip.mp4

-ss antes de -i busca rapidamente. Após -i, busca com precisão, mas mais lentamente. Para recompactações, qualquer um é aceitável no FFmpeg moderno.

Junção

# Mesmo codec, resolução, fps: instantâneo, sem perdas
printf "file 'a.mp4'\nfile 'b.mp4'\n" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy out/joined.mp4

# Fontes diferentes: normalizar durante a junção
ffmpeg -i a.mp4 -i b.mp4 -filter_complex \
 "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,fps=30,setsar=1[v0];\
  [1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,fps=30,setsar=1[v1];\
  [0:a][1:a]concat=n=2:v=1:a=1[v][a]" \
 -map "[v]" -map "[a]" -c:v libx264 -crf 20 -c:a aac out/joined.mp4

PowerShell: escreva list.txt com Set-Content e use acento grave para continuação de linha ou uma única linha longa em vez de \.

Redimensionar e reenquadrar

# Ajustar dentro de 1920x1080 com barras
-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2"
# Preencher 1920x1080, cortar excesso
-vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080"
# Largura 1280, altura automática e par
-vf "scale=1280:-2"

Comprimir

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -movflags +faststart out/small.mp4
FinalidadeCRFPreset
Master / arquivo16-18slow
Produção20-22medium
Web / pré-visualização23-26fast
Rascunho rápido28+veryfast

CRF menor significa maior qualidade e arquivo maior. Para um tamanho alvo, use -b:v de duas passagens em vez de CRF.

Velocidade

# 2x mais rápido, vídeo e áudio
ffmpeg -i in.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" out/fast.mp4
# 0.5x câmera lenta
ffmpeg -i in.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" out/slow.mp4
# Apenas vídeo
ffmpeg -i in.mp4 -an -filter:v "setpts=0.25*PTS" out/timelapse.mp4

O multiplicador setpts = 1 / velocidade. atempo aceita de 0,5 a 2,0 por filtro, então encadeie para mais: atempo=2.0,atempo=2.0 para 4x.

Fades

# 1 s de entrada, 1 s de saída em um clipe de 10 s
ffmpeg -i in.mp4 -vf "fade=t=in:st=0:d=1,fade=t=out:st=9:d=1" -af "afade=t=in:st=0:d=1,afade=t=out:st=9:d=1" out/faded.mp4

Áudio

ffmpeg -i in.mp4 -vn -c:a libmp3lame -q:a 2 out/audio.mp3      # extrair mp3
ffmpeg -i in.mp4 -vn -c:a copy out/audio.m4a                   # extrair sem recompactar (fonte AAC)
ffmpeg -i video.mp4 -i voice.wav -map 0:v -map 1:a -c:v copy -c:a aac -shortest out/dubbed.mp4   # substituir áudio
ffmpeg -i in.mp4 -an -c:v copy out/silent.mp4                  # remover áudio

GIF

ffmpeg -i in.mp4 -t 5 -vf "fps=15,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" out/preview.gif

Imagens

ffmpeg -ss 5 -i in.mp4 -frames:v 1 -q:v 2 out/frame.jpg          # um quadro
ffmpeg -framerate 30 -i frames/%04d.png -c:v libx264 -pix_fmt yuv420p out/from-frames.mp4
ffmpeg -loop 1 -i still.png -t 5 -c:v libx264 -pix_fmt yuv420p -r 30 out/still.mp4

Solução de problemas

SintomaCorreção
height not divisible by 2Adicione scale=trunc(iw/2)*2:trunc(ih/2)*2
Reproduz no VLC, mas não no navegador ou celular-c:v libx264 -pix_fmt yuv420p -movflags +faststart
Áudio dessincroniza após alteração de velocidadeUse setpts e atempo juntos em filter_complex
Áudio dessincroniza em clipes de celular com taxa de quadros variávelAdicione -vsync cfr -r 30 (ou -fps_mode cfr)
Primeiros quadros pretos após corte com -c copyRecompacte em vez de copiar o stream
Saída tem 0 bytesLeia o erro completo com -v error; verifique o mapeamento de streams
Caminhos com espaçosColoque entre aspas: "my clip.mp4"
Prompt de sobrescrita bloqueia automaçãoAdicione -y (sobrescrever) ou -n (nunca)

Hábitos de segurança

  • Escreva em out/, nunca no caminho de entrada.
  • Adicione -hide_banner -loglevel error em scripts, -stats para ver o progresso.
  • Verifique o resultado com ffprobe e a skill video-qa.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

iamaanahmad/captions-subtitles

Create, edit, translate and burn in captions and subtitles - transcribe speech with Whisper, write SRT/VTT/ASS files, style them, and hard-burn word-highlight captions for Shorts, Reels and TikTok. Use for any captioning, subtitle, transcript or accessibility request.

iamaanahmad/motion-design-craft

Motion design rules for programmatic and edited video - durations, easing, springs, staggering, read time for on-screen text, beat grids, transitions and visual hierarchy, plus the defaults that make a video look AI-generated. Use when animating scenes, choosing timings, or reviewing a video that feels off.

iamaanahmad/moviepy-python-video

Compose and edit video in pure Python with moviepy 2.x - overlay text, lower thirds and captions on footage, cut and join clips, add audio, build short single-file build.py videos without Node. Use when the user wants Python-based video editing or deterministic text over AI-generated video.

iamaanahmad/remotion-programmatic-video

Build videos as React code with Remotion - compositions, sequences, springs, interpolation, audio sync, data-driven props, studio preview and rendering to MP4. Use for explainers, product demos, release notes, data charts, branded templates, or any video that should be reproducible from code.

iamaanahmad/screen-recording-demos

Record clean product and web app demos - scripted browser recording with Playwright, cursor and zoom polish, speed ramps, trimming dead time and syncing to narration. Use when the user wants a walkthrough, tutorial, UI demo or release video of a web app, or a repeatable recording.

iamaanahmad/voiceover-tts

Generate and time narration with text-to-speech (ElevenLabs, OpenAI TTS, Kokoro, Piper) or prepare a recorded voice - script prep, per-scene audio files, pacing, pronunciation, cleanup and loudness. Use when the user needs a voiceover, narration, dubbing, or voice cloning guidance.

Habilidades Relacionadas