ffmpeg: automatizar el procesado de vídeo con scripts en Windows, linux y Mac

 

#HowTo #ffmpeg #herramientas #productividad

Disclaimer: a mí siempre me ha gustado más trabajar con scripts que con menús y ventanas. Desde que hace unos 35 años empecé a usar SPSS, pasando por R y cualquier otro programa que me permita guardar un log de lo que he hecho como algo ejecutable en el futuro, me tienen robado el corazón. Así que esto que describo no es para todos los públicos.

Dicho esto: llevo años editando vídeos con Camtasia, MS Stream y otras aplicaciones. Funcionan bien. El problema no es solo que no puedas hacer batch. Es que algunas operaciones que parecen simples, en una herramienta con interfaz gráfica, se vuelven absurdamente lentas. Sacar diez fragmentos recortados de un vídeo en Camtasia puede costarte fácilmente dos horas: abrir el proyecto, marcar el inicio y el fin de cada fragmento, exportar, esperar el render y repetir si no ha salido como querías a la primera. Lo mismo con Adobe Premiere,  Clipchamp, MS Stream,  o cualquier otra herramienta con ventanas y botones. Están diseñadas para la edición creativa, para decidir qué hacer con un vídeo. No para procesar en volumen. No es un defecto, es que no es su caso de uso.

Si además tenemos en cuenta el tiempo de renderizado… Las herramientas con interfaz gráfica tienen que gestionar previsualización, efectos, capas… Aunque tú solo quieras cortar un fragmento. ffmpeg en local no tiene nada de eso; va directo al fichero y, en muchos casos, a una velocidad de vértigo.

El otro problema es la reproducibilidad. Si has tardado dos horas en sacar esos diez fragmentos y luego necesitas cambiar algo (el formato de salida, el punto de corte, lo que sea), vuelves a empezar casi desde cero.  Con un script, cualquier modificación tarda solo segundos: cambias un parámetro, vuelves a ejecutar, y obtienes el resultado actualizado sobre todos los ficheros. Además, tienes por escrito exactamente qué has hecho, lo que no es fácil de recordar cuando ha pasado tiempo (aunque sea poco) desde que lo hiciste.

Este fin de semana he integrado ffmpeg a mi espacio de trabajo (es un año con intensas novedades: migrar de Ennote a Zotero, empezar con Obsidian, pasar de Jira a Clockify…). ffmpeg es una herramienta de línea de comandos (gratuita, de código abierto) que procesa vídeo y audio en local y acepta scripts. Puedes dividir un vídeo en fragmentos por tiempo, comprimir, cambiar de formato, extraer audio, recortar o concatenar, y hacerlo en modo batch sobre los ficheros de una carpeta entera sin tocar nada manualmente.

Cómo instalarlo en Windows

  1. Descarga la versión compilada desde https://ffmpeg.org/download.html (sección Windows, yo he usado la build de gyan.dev).
  2. Descomprime el .zip
  3. Localiza el ejecutable que necesitas es ffmpeg.exe, que está dentro de la subcarpeta bin. No hace falta instalarlo ni tocar el PATH si  el ffmpeg.exe está en la misma carpeta donde tienes los scripts y lo llamas como .\ffmpeg.exe.
  4. Si prefieres añadir la carpeta donde este el .ex al PATH para poder ejecutarlo desde cualquier carpeta tambien es una opcion (yo no la uso).

Los scripts: PowerShell + .bat

Yo escribo los scripts en PowerShell (.ps1) porque es más legible para lógica con bucles y condiciones. El único problema es que hacer doble clic en un .ps1 no lo ejecuta directamente en Windows debido a la política de ejecución por defecto. La solución es crear un fichero .bat que lo llame:

@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0tu_script.ps1"
pause

Con ese .bat en la misma carpeta que el .ps1, los videos y el ffmepg.exe haces doble clic y se ejecuta. El %~dp0 es la ruta de la carpeta donde está el .bat (así no depende de desde dónde lo lances), y el pause al final mantiene la ventana abierta para que puedas ver si ha habido algún error.

Un script básico que procesa todos los .mp4 de la carpeta actual tiene esta estructura:

$carpeta = Split-Path -Parent $MyInvocation.MyCommand.Path
$videos = Get-ChildItem -Path $carpeta -Filter "*.mp4"

foreach ($video in $videos) {
    $entrada = $video.FullName
    $salida = Join-Path $carpeta ("procesado_" + $video.Name)
    
    & ffmpeg -i $entrada [tus opciones aquí] $salida
}

Ajustas [tus opciones aquí] a lo que necesites y el script recorre todos los vídeos de la carpeta sin que tengas que hacer nada más.

El balance

Me costó unas dos horas montarme los scripts (era novato en ffmpeg y parte del tiempo fue entender qué opciones hacen qué). Ya me han ahorrado aproximadamente seis horas de trabajo este fin de semana en tareas que hago con regularidad. El retorno empieza a ser positivo, y va a seguir siéndolo cada vez que los reutilice.

Camtasia y similares no va a desaparecer de mi flujo para ediciones más elaboradas. Pero para procesar en batch, para tareas que se repiten, o simplemente para no perder una tarde haciendo a mano algo que dura treinta segundos en un script, merece la pena la inversión inicial.

Visitas: 12

Por qué la estrategia de IA de tu universidad ya está obsoleta (y lo seguirá estando)

Cuando la tecnología avanza en meses y la institución en años

Llevo como 3 años teniendo la intuición de que el modo en que “la gente” aborda el asunto de la IA gen en la universidad no me convence (los tipos de controles que plantean, los enfoques subyacentes, que son prácticamente reactivos, etc.). No sabía hacer explícito por qué me chirriaba tanto, simplemente tenía el síndrome del niño de “El traje nuevo del emperador” del cuento de H.C. Andersen. Hasta hoy. Gracias a este post de Ethan Mollick se me ha encendido la bombillita de por qué no me cuadra.
Si pienso en mi universidad como una organización (de las leeeeeentas en reaccionar), donde los cambios requieren muchos meses (o años). No solo porque es pública… es que, sobre todo, es muy grande (trabajan unas 5.000 personas e influyen en los órganos de gobierno los representantes de 35.000), y tiene una cultura débil, o mejor dicho, muchas culturas fuertes incompatibles entre sí, desarrolladas en silos. Entonces, una tecnología que avanza en ciclos de muy pocos meses liberando capacidades nuevas (y casi inimaginables unos meses o semanas antes), que impactan considerablemente en la función y objetivos de la organización, nos lleva a la cuestión clave a la que apunta Ethan y que también le he escuchado a David Roldán Martínez:
La pregunta relevante no es “cuáles son las capacidades de los modelos”, sino quién (o quiénes) en la organización tiene la autoridad y la capacidad para revisar, establecer e implementar las medidas de protección (o de aprovechamiento de la oportunidad) cada 4 o 5 meses.
Me da la sensación (igual me equivoco) que la gente que conozco está anclada en la primera pregunta. Quizás porque la respuesta a la segunda pregunta es desgraciadamente obvia: NADIE.

Tres años siendo el niño del cuento (y por fin sé por qué)
 
Referencia:
 

Visitas: 9

Comprobacion del framework de perfil profesional con el caso de uso de GIOI

Hace unas semanas compartí el Framework para el analisis de las competencias a formar en la univesidad | Blog de Juan A. Marin-Garcia.

Esta semana lo he probado yo mismo aplicado al Grado de Ingeniería de Organización Industrial. El jueves voy a ponerlo en práctica con unos 35 asistentes al taller y veremos qué pasa. Hasta ahora solo lo he aplicado a mis propias asignaturas, que no es exactamente una muestra imparcial.

 
Cinco perfiles:
 
Referencias:
European Commission. Directorate General for Employment, Social Affairs and Inclusion. (2019). ESCO handbook: European skills, competences, qualifications and occupations. Publications Office. atlasTI-ART-639 soft Skills. https://data.europa.eu/doi/10.2767/934956

RESULTADOS–> [en construcción]

Esa metodología me permitirá activar un proyecto atascado sobre soft-skills

#competencias #universidad #framework #docencia

Visitas: 10