Dựng video cơ bản (edición básica de vídeo con ffmpeg)
Ayudas a un creador principiante de YouTube a editar vídeos en su propio ordenador con ffmpeg (gratuito). Muchos usuarios son vietnamitas: si el usuario escribe en vietnamita, responde en vietnamita sencillo y hablado y mantén las palabras técnicas simples (di qué hace un comando, no cómo funciona).
Requisitos y limitaciones
Dile esto al usuario antes de instalar nada, y siempre que una solicitud necesite algo que falte.
- Necesita: un plan de Claude de pago con Claude Code; ffmpeg (gratuito, instalado solo con el permiso del usuario). Subtítulos solo: Python 3.10+ y el paquete
faster-whisper(unos cientos de MB, descargado una vez). - GPU: no es necesaria. Whisper funciona en la CPU cuando no hay tarjeta NVIDIA, por lo que los subtítulos para un vídeo largo son lentos.
- SO probado: Windows 10 (comprobación de configuración en la aplicación de escritorio de Claude, y todos los comandos de recortar/unir/vertical/nivelar volumen/exportar). macOS: aún no probado.
- Limitaciones: los subtítulos automáticos se equivocan con nombres, números y acentos regionales, por lo que el usuario debe revisar el archivo .srt. Solo ediciones básicas: sin efectos, texto animado ni música.
- Qué se desactiva sin ello: sin Python/faster-whisper, todo excepto los subtítulos sigue funcionando.
Reglas (siempre)
- Nunca modifiques ni elimines los archivos originales del usuario. Lee desde
raw/(o donde esté el archivo del usuario); escribe cada resultado enexports/con un nombre nuevo (por ejemploexports/clip-cat.mp4). Nunca sobrescribas un archivo existente: añade-na ffmpeg, o elige un nombre nuevo. - Pregunta antes de instalar nada. Di qué es, por qué se necesita, y el comando exacto, luego espera un sí.
- Muestra el comando antes de ejecutarlo y di en una frase lo que hará. Para cualquier cosa que lleve más de un minuto (vídeos largos, subtítulos), dilo primero.
- Comprueba el archivo antes de editarlo con
ffprobe(tamaño, fotogramas por segundo, duración, audio) para que el comando se ajuste al archivo. - Pon entrecomilladas las rutas de los archivos (a menudo contienen espacios y letras vietnamitas). En Windows, prefiere barras inclinadas en las rutas de filtros de ffmpeg.
- Después de cada edición, dile al usuario dónde está el nuevo archivo y qué debe comprobar (reproducirlo, escuchar el principio y el final).
- No afirmes reglas de YouTube a las que no puedas señalar. Cuando esta habilidad cite a YouTube, la fuente está enlazada.
1. Comprobar el ordenador
Ejecuta, uno a uno:
ffmpeg -versionyffprobe -versionpython --version(en macOS prueba tambiénpython3 --version) - solo necesario para subtítulos.
Si falta ffmpeg, ofrécete a instalarlo (pregunta primero):
- Windows:
winget install --id Gyan.FFmpeg -e - macOS (Homebrew):
brew install ffmpeg(si faltabrew, dirige al usuario a https://brew.sh y detente).
Si falta Python y el usuario quiere subtítulos:
- Windows:
winget install --id Python.Python.3.12 -e - macOS:
brew install python
Después de instalar, es posible que el usuario necesite abrir una nueva terminal (o reiniciar Claude Code) antes de que se encuentre el comando. Vuelve a comprobarlo con ffmpeg -version.
2. Configurar una carpeta de proyecto
Crea, dentro de la carpeta en la que se abrió Claude Code:
raw/ originales (copia los vídeos aquí; nunca editarlos)
exports/ cada archivo final o intermedio
CLAUDE.md notas sobre el canal, leídas por Claude Code al inicio de cada sesión
Si CLAUDE.md no existe, ofrécete a crearlo y haz al usuario 4 preguntas breves: tema del canal, idioma del vídeo, Shorts / vídeos largos / ambos, cámara habitual (móvil o cámara). Escribe un archivo breve como:
# Mi canal
- Tema: ...
- Idioma del vídeo: vietnamita
- Hago: vídeos largos y Shorts
- Grabo con: móvil
- Originales en raw/, archivos terminados en exports/
3. Ediciones básicas
Comprueba siempre la entrada primero: ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate:format=duration -of default=nw=1 "raw/input.mp4"
Recortar (cắt một đoạn)
Re-codifica para que el corte caiga exactamente en el tiempo 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"
Los tiempos pueden ser mm:ss o hh:mm:ss. Varios fragmentos = varios recortes, luego unir.
Unir (ghép nhiều clip)
- Comprueba cada clip con ffprobe. Si todos tienen el mismo ancho, alto y fotogramas por segundo, escribe
exports/list.txt:
luego: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" - Si difieren, escala y rellena cada uno al mismo tamaño y fotogramas en un solo paso (ejemplo para 2 clips a 1920x1080, 30 fps):
Si un clip no tiene pista de audio, díselo al usuario y añade silencio (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) en lugar de fallar.
Versión vertical para Shorts (khung dọc)
YouTube considera un vídeo como Short cuando es cuadrado o vertical y de hasta 3 minutos de duración, subido a un máximo de 1080p (Ayuda de YouTube 15424877, 10059070). 1080x1920 (9:16) es el tamaño vertical habitual; YouTube no publica un tamaño exacto en píxeles.
- Recortar el centro (bueno cuando la persona está en el medio):
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" - Mantener todo el fotograma sobre un fondo desenfocado (bueno para grabaciones de pantalla o planos generales):
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"Pregunta cuál quiere el usuario; si el sujeto está descentrado, ofrécete a mover el recorte (crop=ih*9/16:ih:X:0, X = borde izquierdo en píxeles).
Subtítulos en vietnamita (phụ đề)
Usa Whisper en el propio ordenador del usuario (gratuito, no se sube nada). Necesita Python y el paquete faster-whisper (aproximadamente unos cientos de MB con el modelo; pregunta primero):
python -m pip install faster-whisper
Luego ejecuta el script que viene con esta habilidad (ruta: la carpeta scripts junto a este SKILL.md):
python "<carpeta habilidad>/scripts/phu_de.py" "raw/input.mp4" --lang vi --out "exports/input.srt"
Escribe un archivo .srt. Dile al usuario que Whisper comete errores (nombres, números, acentos): debe abrir el .srt y corregirlo antes de usarlo. La primera ejecución descarga el modelo y es lenta.
Para incrustar los subtítulos en la imagen (quemarlos), después de que el usuario haya corregido el .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"
(En Windows, mantén la ruta del .srt relativa y con barras inclinadas; una letra de unidad como C: debe escribirse C\: dentro del filtro). Muchos creadores suben el .srt a YouTube Studio en lugar de quemarlo, para que los espectadores puedan desactivarlo.
Nivelar el volumen (chuẩn âm lượng)
YouTube no publica un objetivo de sonoridad; del lado de los espectadores tiene un ajuste "Volumen estable" que iguala las partes fuertes y suaves (Ayuda de YouTube 14106294). Una opción común para vídeo en línea es aproximadamente -14 LUFS; di que es una opción común, no una regla de YouTube. Usa loudnorm de ffmpeg en dos pasadas (documentación de ffmpeg):
- Medir:
ffmpeg -hide_banner -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null -Leeinput_i,input_tp,input_lra,input_threshdel JSON al final. - Aplicar con esos 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"No uses una sola pasada en un vídeo terminado: sigue ajustando el volumen durante el vídeo.
Exportar para YouTube (xuất file)
Sigue la configuración de codificación de subida recomendada por YouTube (Ayuda de YouTube 1722171): MP4 con inicio rápido, perfil H.264 High, progresivo, 4:2:0, GOP cerrado de la mitad de la tasa de fotogramas, 2 fotogramas B; audio AAC-LC a 48 kHz; color BT.709; misma tasa de fotogramas que la grabada. Tasas de bits de vídeo recomendadas para SDR: 1080p 8 Mbps (24-30 fps) o 12 Mbps (48-60 fps); 720p 5 / 7.5 Mbps; 1440p 16 / 24; 4K 35-45 / 53-68. Audio: estéreo 384 kbps (mono 128 kbps). Ejemplo para un vídeo de 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"
Ajusta -b:v y -g (la mitad de la tasa de fotogramas) al vídeo; para 60 fps usa -b:v 12M -g 30. Mantén la tasa de fotogramas a la que se grabó el vídeo (no añadas -r).
Fotograma de 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"
Ofrece 3-4 fotogramas en diferentes momentos para que el usuario pueda elegir. Las reglas de las miniaturas de YouTube (tamaño, 16:9, JPG/PNG, tamaño de archivo) están en Ayuda de YouTube 72431.
Si algo sale mal
Esta habilidad fue escrita con Claude Code, por lo que puede tener errores, y cada ordenador es diferente. Cuando un paso falla, o el usuario dice que la habilidad hizo algo mal:
- Explica claramente, en vietnamita: qué falló y por qué, en una o dos frases. Sin trazas de pila sin procesar a menos que el usuario las pida.
- Lee esta habilidad y el comando que se ejecutó. Encuentra la causa (la lista a continuación cubre las comunes).
- Arrégialo y vuelve a ejecutar, escribiendo un archivo nuevo en
exports/. Nunca toques ni sobrescribas los originales del usuario, ni siquiera mientras arreglas. - Si la causa estaba en esta misma habilidad (un comando incorrecto o un paso faltante), dilo, y sugiere reportarlo para que se corrija para todos: https://github.com/thegentleminh/thegentleminh-skills/issues
Fallos comunes
'ffmpeg' is not recognized/command not found: ffmpeg no está instalado o la terminal se abrió antes de instalarlo; abre una nueva terminal y vuelve a comprobar.No such file or directory: comprueba la ruta y las comillas; lista la carpeta para encontrar el nombre exacto.already exists. Exiting.: el nombre de salida está ocupado; elige un nombre nuevo (nunca sobrescribas).Unknown encoder 'libx264': la compilación de ffmpeg carece de él; reinstala con los comandos de arriba.- Audio desincronizado después de recortar: vuelve a ejecutar el recorte con re-codificación (los comandos de arriba ya re-codifican).