Diapositivas de un video de seminario
scripts/ contiene una herramienta en dos formas que hacen lo mismo:
| Script | Úsalo en |
|---|---|
scripts/extract_slides.sh | Linux, macOS, Git Bash o WSL en Windows |
scripts/extract_slides.ps1 | Windows PowerShell, no necesita bash |
scripts/slides.tex | Plantilla Beamer que los scripts copian junto a los fotogramas |
Cómo funciona: yt-dlp descarga solo el flujo de video (sin audio, como máximo
1080p). ffmpeg lo muestrea a 1 fotograma/s y conserva el primer fotograma más
cada fotograma cuya puntuación de cambio de escena supere un umbral, de modo
que cada fotograma conservado es una nueva diapositiva o un nuevo paso de
construcción. El registro showinfo proporciona el tiempo de video de cada
fotograma. La carpeta de salida contiene:
slide_001.png,slide_002.png, ...: uno por cada cambio de diapositivatimestamps.txt: la hora de video de cada uno, en segundosframe_list.texyslides.tex:pdflatex slides.texgenera una página por diapositiva con su horah:mm:ssdebajo
Pasos
-
Verifica las herramientas. Ejecuta
ffmpeg -versionyyt-dlp --version. Si falta alguna, instálala (abajo) o indícale al usuario cómo hacerlo. No se necesita yt-dlp para un archivo local. -
Elige el script para la plataforma. En Windows, usa el de PowerShell a menos que el usuario esté claramente en Git Bash o WSL.
-
Ejecútalo sobre la URL o archivo que el usuario proporcionó, en una carpeta con el nombre de la charla (por ejemplo
-o speaker_topic_frames), no dentro de la carpeta de la habilidad.bash scripts/extract_slides.sh -u "https://www.youtube.com/watch?v=ID" -o talk_frames bash scripts/extract_slides.sh -i "recording.mp4" -o talk_framespowershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -Url "https://www.youtube.com/watch?v=ID" -OutDir talk_frames powershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -InputFile "C:\path\to\recording.mp4" -OutDir talk_frames-ExecutionPolicy Bypassevita el bloqueo predeterminado de Windows en scripts, solo para esa ejecución. -
Revisa los fotogramas antes de informar. Abre algunos PNG (primero, intermedio, último) y verifica:
- Cámara web o vista del presentador junto a las diapositivas: el movimiento
del presentador genera cambios de diapositiva falsos. Encuentra el área de la
diapositiva en un fotograma y vuelve a ejecutar con un recorte,
-c W:H:X:Y/-Crop W:H:X:Y(sintaxis de recorte de ffmpeg: ancho, alto, luego esquina superior izquierda). - Demasiados pocos fotogramas (pasos de construcción o cambios pequeños
omitidos): vuelve a ejecutar con un umbral más bajo,
-t 0.05/-Threshold 0.05. - Demasiados fotogramas (video, animaciones, ruido de cámara): súbelo a
0.2-0.3, o recorta. - Duplicados: elimina los PNG sobrantes y sus líneas en
frame_list.tex.
- Cámara web o vista del presentador junto a las diapositivas: el movimiento
del presentador genera cambios de diapositiva falsos. Encuentra el área de la
diapositiva en un fotograma y vuelve a ejecutar con un recorte,
-
Genera el PDF si el usuario lo desea:
cda la carpeta de salida y ejecutapdflatex slides.tex(olatexmk -pdf slides.tex). -
Informa el número de fotogramas, la carpeta de salida, el PDF y cualquier cosa pendiente para el usuario, como duplicados que conservaste a propósito.
Opciones
| bash | PowerShell | Significado | Predeterminado |
|---|---|---|---|
-u URL | -Url URL | Video a descargar (cualquier sitio que soporte yt-dlp) | |
-i FILE | -InputFile FILE | Video local en lugar de descarga | |
-o DIR | -OutDir DIR | Carpeta de salida | video_frames |
-t X | -Threshold X | Umbral de cambio de escena, 0-1 | 0.10 |
-c W:H:X:Y | -Crop W:H:X:Y | Recortar primero al área de la diapositiva | ninguno |
-b NAME | -Browser NAME | Usar cookies de inicio de sesión de este navegador (chrome, firefox, edge, ...) | ninguno |
Instalación de las herramientas
- Windows:
winget install --id yt-dlp.yt-dlpywinget install --id Gyan.FFmpeg, luego cierra y vuelve a abrir PowerShell para que los encuentre. - macOS:
brew install yt-dlp ffmpeg - Linux:
sudo apt install ffmpeg(o el equivalente de tu distribución) ypip install -U yt-dlp - LaTeX (solo para el PDF): TeX Live o MiKTeX.
latexmkde MiKTeX necesita Perl;pdflatexsimple no.
Solución de problemas
- Grabación detrás de un inicio de sesión (Panopto, Zoom cloud, portal
universitario): pasa
-b chrome/-Browser chrome(o el navegador con el que el usuario inició sesión). Si yt-dlp aún no puede obtenerlo, pide al usuario que descargue el video y use-i. $'\r': command not foundopipefail: invalid option nameen Git Bash: el archivo.shtiene saltos de línea de Windows. Ejecutased -i 's/\r$//' scripts/extract_slides.shuna vez.- Errores de yt-dlp en YouTube ("Sign in to confirm", errores de formato):
actualízalo primero,
yt-dlp -Uopip install -U yt-dlp, que soluciona la mayoría. - Sin conexión de red al host del video (sesión en espacio aislado o en la nube): indícalo y proporciona al usuario el comando para ejecutar en su propia máquina.
Solo obtén grabaciones que el usuario tenga permiso de acceder, y conserva los fotogramas para sus propias notas y estudio a menos que la licencia de la charla diga lo contrario.