Dựng video cơ bản (edição básica de vídeo com ffmpeg)
Você ajuda um criador de YouTube iniciante a editar vídeos no próprio computador com ffmpeg (gratuito). Muitos usuários são vietnamitas: se o usuário escrever em vietnamita, responda em vietnamita claro e falado, mantendo os termos técnicos simples (diga o que um comando faz, não como funciona).
Requisitos e limites
Informe o usuário sobre estes itens antes de instalar qualquer coisa e sempre que uma solicitação precisar de algo que está faltando.
- Necessário: um plano pago do Claude com Claude Code; ffmpeg (gratuito, instalado apenas com a autorização do usuário). Legendas: Python 3.10+ e o pacote
faster-whisper(alguns MBs, baixado uma vez). - GPU: não necessária. O Whisper roda na CPU quando não há placa NVIDIA, então legendas para um vídeo longo são lentas.
- SO testado: Windows 10 (verificação de configuração no aplicativo de desktop Claude, e todos os comandos de corte/junção/vertical/volume/exportação). macOS: ainda não testado.
- Limites: legendas automáticas erram nomes, números e sotaques regionais, então o usuário deve revisar o arquivo .srt. Apenas edições básicas: sem efeitos, texto animado ou música.
- O que desliga sem ele: sem Python/faster-whisper, tudo exceto legendas ainda funciona.
Regras (sempre)
- Nunca altere ou delete os arquivos originais do usuário. Leia de
raw/(ou onde o arquivo do usuário estiver); escreva todo resultado emexports/com um novo nome (por exemploexports/clip-cat.mp4). Nunca sobrescreva um arquivo existente: adicione-nao ffmpeg ou escolha um novo nome. - Pergunte antes de instalar qualquer coisa. Diga o que é, por que é necessário e o comando exato, então aguarde um sim.
- Mostre o comando antes de executá-lo e diga em uma frase o que ele fará. Para qualquer coisa que demore mais de um minuto (vídeos longos, legendas), avise primeiro.
- Verifique o arquivo antes de editá-lo com
ffprobe(tamanho, taxa de quadros, duração, áudio) para que o comando se ajuste ao arquivo. - Coloque os caminhos de arquivo entre aspas (eles frequentemente contêm espaços e letras vietnamitas). No Windows, prefira barras normais em caminhos de filtro do ffmpeg.
- Após cada edição, informe ao usuário onde o novo arquivo está e o que verificar (reproduzi-lo, ouvir o início e o fim).
- Não afirme regras do YouTube que você não possa referenciar. Onde esta habilidade cita o YouTube, a fonte está linkada.
1. Verificar o computador
Execute, um de cada vez:
ffmpeg -versioneffprobe -versionpython --version(no macOS tente tambémpython3 --version) - apenas necessário para legendas.
Se o ffmpeg estiver faltando, ofereça-se para instalá-lo (pergunte primeiro):
- Windows:
winget install --id Gyan.FFmpeg -e - macOS (Homebrew):
brew install ffmpeg(se obrewem si estiver faltando, direcione o usuário para https://brew.sh e pare).
Se o Python estiver faltando e o usuário quiser legendas:
- Windows:
winget install --id Python.Python.3.12 -e - macOS:
brew install python
Após a instalação, o usuário pode precisar abrir um novo terminal (ou reiniciar o Claude Code) antes que o comando seja encontrado. Verifique novamente com ffmpeg -version.
2. Configurar uma pasta de projeto
Crie, dentro da pasta onde o Claude Code foi aberto:
raw/ originais (copie os vídeos aqui; nunca editados)
exports/ todo arquivo final ou intermediário
CLAUDE.md anotações sobre o canal, lidas pelo Claude Code no início de cada sessão
Se CLAUDE.md não existir, ofereça-se para criá-lo e faça 4 perguntas curtas ao usuário: tópico do canal, idioma do vídeo, Shorts / vídeos longos / ambos, câmera usual (telefone ou câmera). Escreva um arquivo curto como:
# Meu canal
- Tópico: ...
- Idioma do vídeo: vietnamita
- Faço: vídeos longos e Shorts
- Gravo com: telefone
- Originais estão em raw/, arquivos prontos em exports/
3. Edições básicas
Sempre verifique a entrada primeiro: ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate:format=duration -of default=nw=1 "raw/input.mp4"
Cortar (cắt một đoạn)
Recodifique para que o corte termine exatamente no tempo solicitado:
ffmpeg -n -ss 00:00:12 -to 00:01:30 -i "raw/input.mp4" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-cat.mp4"
Os tempos podem ser mm:ss ou hh:mm:ss. Várias partes = vários cortes, depois juntar.
Juntar (ghép nhiều clip)
- Verifique cada clipe com ffprobe. Se todos tiverem a mesma largura, altura e taxa de quadros, escreva
exports/list.txt:
então:file '../raw/clip1.mp4' file '../raw/clip2.mp4'ffmpeg -n -f concat -safe 0 -i "exports/list.txt" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4" - Se forem diferentes, redimensione e preencha cada um para o mesmo tamanho e taxa de quadros em uma etapa (exemplo para 2 clipes para 1920x1080, 30 fps):
Se um clipe não tiver faixa de áudio, informe o usuário e adicione silêncio para ele (ffmpeg -n -i "raw/a.mp4" -i "raw/b.mp4" -filter_complex "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v0];[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[0:a]aresample=48000[a0];[1:a]aresample=48000[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"anullsrc) em vez de falhar.
Versão vertical para Shorts (khung dọc)
O YouTube conta um vídeo como Short quando ele é quadrado ou vertical e tem até 3 minutos de duração, enviado com até 1080p (YouTube Help 15424877, 10059070). 1080x1920 (9:16) é o tamanho vertical usual; o YouTube não publica um tamanho de pixel exato.
- Cortar o centro (bom quando a pessoa está no meio):
ffmpeg -n -i "raw/input.mp4" -vf "crop=ih*9/16:ih,scale=1080:1920,setsar=1" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4" - Manter o quadro inteiro com fundo desfocado (bom para gravações de tela ou planos abertos):
ffmpeg -n -i "raw/input.mp4" -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:2[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,setsar=1[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4"Pergunte qual o usuário deseja; se o assunto estiver descentralizado, ofereça-se para mover o corte (crop=ih*9/16:ih:X:0, X = borda esquerda em pixels).
Legendas em vietnamita (phụ đề)
Usa o Whisper no próprio computador do usuário (gratuito, nada é enviado). Precisa de Python e do pacote faster-whisper (cerca de algumas centenas de MB com o modelo; pergunte primeiro):
python -m pip install faster-whisper
Depois execute o script que vem com esta habilidade (caminho: a pasta scripts ao lado deste SKILL.md):
python "<pasta da habilidade>/scripts/phu_de.py" "raw/input.mp4" --lang vi --out "exports/input.srt"
Ele escreve um arquivo .srt. Avise ao usuário que o Whisper comete erros (nomes, números, sotaques): ele deve abrir o .srt e corrigi-lo antes de usar. A primeira execução baixa o modelo e é lenta.
Para incorporar as legendas na imagem (queimar), após o usuário ter corrigido o .srt:
ffmpeg -n -i "raw/input.mp4" -vf "subtitles=exports/input.srt:force_style='FontSize=18,Outline=2'" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a copy "exports/input-phude.mp4"
(No Windows, mantenha o caminho do .srt relativo e com barras normais; uma letra de unidade como C: deve ser escrita C\: dentro do filtro.) Muitos criadores enviam o .srt para o YouTube Studio em vez de queimá-lo, para que os espectadores possam desligá-lo.
Equalizar volume (chuẩn âm lượng)
O YouTube não publica um alvo de volume; no lado dos espectadores, existe uma configuração "Volume estável" que equaliza partes altas e baixas (YouTube Help 14106294). Uma escolha comum para vídeo online é cerca de -14 LUFS; diga que é uma escolha comum, não uma regra do YouTube. Use o loudnorm do ffmpeg em duas passagens (documentação ffmpeg):
- Medir:
ffmpeg -hide_banner -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null -Leiainput_i,input_tp,input_lra,input_threshdo JSON no final. - Aplicar com esses números:
ffmpeg -n -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:linear=true,aresample=48000 -c:v copy -c:a aac -b:a 192k "exports/video-am-luong.mp4"Não use uma única passagem em um vídeo finalizado: ele continua ajustando o volume durante o vídeo.
Exportar para YouTube (xuất file)
Segue as configurações de codificação de upload recomendadas pelo YouTube (YouTube Help 1722171): MP4 com fast start, H.264 High profile, progressivo, 4:2:0, GOP fechado de metade da taxa de quadros, 2 B-frames; áudio AAC-LC a 48 kHz; cor BT.709; mesma taxa de quadros da gravação. Taxas de bits de vídeo recomendadas para SDR: 1080p 8 Mbps (24-30 fps) ou 12 Mbps (48-60 fps); 720p 5 / 7,5 Mbps; 1440p 16 / 24; 4K 35-45 / 53-68. Áudio: estéreo 384 kbps (mono 128 kbps). Exemplo para um vídeo 1080p, 30 fps (GOP 15):
ffmpeg -n -i "exports/video.mp4" -c:v libx264 -profile:v high -pix_fmt yuv420p -b:v 8M -bf 2 -g 15 -flags +cgop -x264-params "colorprim=bt709:transfer=bt709:colormatrix=bt709" -color_range tv -c:a aac -b:a 384k -ar 48000 -movflags +faststart "exports/video-youtube.mp4"
Ajuste -b:v e -g (metade da taxa de quadros) ao vídeo; para 60 fps use -b:v 12M -g 30. Mantenha a taxa de quadros com que o vídeo foi gravado (não adicione -r).
Frame para miniatura (lấy khung hình)
ffmpeg -n -ss 00:00:42 -i "raw/input.mp4" -frames:v 1 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -q:v 2 "exports/khung-0042.jpg"
Ofereça 3-4 frames em tempos diferentes para que o usuário possa escolher. As regras de miniatura do YouTube (tamanho, 16:9, JPG/PNG, tamanho do arquivo) estão em YouTube Help 72431.
Se algo der errado
Esta habilidade foi escrita com Claude Code, então pode conter bugs, e cada computador é diferente. Quando uma etapa falhar, ou o usuário disser que a habilidade fez algo errado:
- Explique claramente, em vietnamita: o que falhou e porquê, em uma ou duas frases. Sem rastreamento de pilha bruto, a menos que o usuário peça.
- Leia esta habilidade e o comando que foi executado. Encontre a causa (a lista abaixo cobre as comuns).
- Corrija e execute novamente, escrevendo um novo arquivo em
exports/. Nunca toque ou sobrescreva os originais do usuário, mesmo durante a correção. - Se a causa estava nesta própria habilidade (um comando errado ou uma etapa faltando), diga isso e sugira reportá-la para que seja corrigida para todos: https://github.com/thegentleminh/thegentleminh-skills/issues
Falhas comuns
'ffmpeg' não é reconhecido/comando não encontrado: ffmpeg não está instalado ou o terminal foi aberto antes da instalação; abra um novo terminal e verifique novamente.Arquivo ou diretório não encontrado: verifique o caminho e as aspas; liste a pasta para encontrar o nome exato.já existe. Saindo.: o nome de saída já está em uso; escolha um novo nome (nunca sobrescreva).Codificador desconhecido 'libx264': a compilação do ffmpeg não o possui; reinstale a partir dos comandos acima.- Áudio fora de sincronia após corte: execute novamente o corte com recodificação (os comandos acima já recodificam).