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: 8

Zotero. Cómo quitar una etiqueta de varias referencias a la vez

En Zotero tengo varias referencias (cada una con muchos tags). En las que tenga seleccionadas en un momento dado, quiero quitar UNA tag (por ejemplo “/ToRead”), solo esa tag. Pero para TODAS las referencias seleccionadas y no para las demás en la pantalla, ¿es posible? ¿Como?

Método 1: Shift + arrastrar

  1. Selecciona las referencias en el panel central
  2. Mantén Shift y arrastra la selección sobre /ToRead en el panel de etiquetas (abajo izquierda)
  3. Zotero la quita de todas las seleccionadas

Limitación: solo funciona si todas las seleccionadas ya tienen esa etiqueta.


Método 2: Asignar color + tecla numérica (más robusto)

  1. Clic derecho sobre /ToRead en el panel de etiquetas > Asignar color
  2. Ponle el número 1 (o cualquier otro libre)
  3. Selecciona las referencias y pulsa 1 en el teclado: alterna la etiqueta (quita si la tienen, pone si no la tienen)

Este segundo método es más práctico si vas a hacer esta operación con frecuencia. Y luego puedes quitar el color asignado si no lo quieres permanente.

Visitas: 12

AIR Framework: documentar el uso de IA en 5 minutos (y necesitar varias semanas para justificarlo)

Marco AIR para uso responsable de IA: útil pero revelador de nuestras inconsistencias 

 Young, J. (2026). AIR: AI in Research – A framework for transparent and responsible AI use mapped to the research process (Version 1). figshare. https://doi.org/10.6084/m9.figshare.31268020.v1

Creo que es muy útil para resolver algunas de las dudas que surgen en mis charlas sobre IA generativa en Research.

Con esta tabla, en menos de 5 minutos, puedes informar con transparencia sobre el uso que has hecho de la IA y las verificaciones que has realizado (la última columna) para estar seguro de que lo etiquetado como riesgo moderado no representa ningún “concern” para la validez de tu trabajo.

Intentar justificar que lo etiquetado como riesgo elevado no te afecta podría dar lugar a un artículo por cada una de las casillas de la columna A4.

Y este es el talón de Aquiles de todo esto… si alguien te obliga a demostrar punto por punto que estás exento de riesgos y sesgos, igual necesitas uno o dos años de trabajo para justificar adecuadamente cualquier artículo… incluso los que has escrito completamente “a mano” sin ayuda de ninguna IA generativa.

Es un poco sorprendente el doble rasero que se aplica, no pidiendo ninguna justificación si lo haces tú solito (proyectando todas tus torpezas y sesgos implícitos), y abrumándote con justificaciones si te apoyas en IA generativa. No, si no está prohibido que la uses, pero si dices que la usas, debes invertir una burrada de horas de trabajo para justificar “adecuadamente” que el uso ha sido correcto.

¿Alguien me ha preguntado alguna vez si he usado correctamente SPSS en los artículos que he escrito en los últimos 30 años? ¡Pero si, las veces que intento adjuntar la sintaxis, los revisores me dicen que quite esa información porque les “despista” y hace innecesariamente largo el artículo!

Young, J. (2026). AIR: AI in Research – A framework for transparent and responsible AI use mapped to the research process (Version 1). figshare. https://doi.org/10.6084/m9.figshare.31268020.v1

Visitas: 88

Estructura de codigos para construir mi 2ndBrain

Para ir avanzando en mi modelo de “second brain”, estaba reflexionando sobre el procesos que sigo para extraer la información y he tenido que hacer un alto para aclarar términos.

La literatura (ver referencias) suele identificar diferente cantidad de etapas en el proceso de análisis de contenido, y darle nombres distintos a etapas que tienen muchas cosas en común.
Por eso he dedicado toda la mañana a integrar la información en una tabla en la que lo relevante es la definición basada en tareas. Que haya estado más o menos acertado al capturar los significados o al agrupar los sinónimos, creo que es mucho menos relevante.

Term used*Definition (qué se hace)
Chunk (free coding; open coding; free text; annotation; quotation)Extraer fragmentos de información; seleccionar la “quotation/annotation” sin añadir ningún “code” es el equivalente a resaltar o subrayar un fragmento de texto (“chunk” en el lenguaje de IAgen). Representan la voz de la persona informante sin interpretación del investigador-a
Open Coding (1st-order concept, initial coding)Selección y refinamiento de los códigos para que representen los temas principales de los chunks, sus similitudes y diferencias. Interpretación conceptual de los open coding y decidir cómo agruparlos bajo temas más abstractos. Emergen nuevos conceptos que ayuden a describir, entender los chunks, o a rellenar gaps entre chunks
Focused coding (axial coding, 2nd order themes)Crear una jerarquía o relación entre los focused codes, añadiendo categorías, y creando una integración conceptual a través de las relaciones entre temas y/o conceptos que explica el cómo, el porqué o las causas (que viene siendo una representación gráfica de la teoría)
Aggregate dimensions (selective coding, theoretical coding)Crear una jerarquía o relación entre los focused codes, añadiendo categorías, y creando una integración conceptual a través de las relaciones entre temas y/o conceptos que explica el cómo, el por qué o las causas (que viene siendo una representación gráfica de la teoria)
* Incluyo entre paréntesis sinónimos utilizados por diferentes tradiciones

Visitas: 24

HowTo impresora PDF con errores

Si al intentar imprimir PDF un documento te sale un error como este:

Eso es debido a algún conflicto de fuentes (por ejemplo, que alguien con un ordenador con otro sistema operativo u otro conjunto de fuentes, haya elegido una fuente muy “molona” que no está en tu ordenador). Y se soluciona de manera supersencilla (pero ojo, cualquier actualización de Acrobat puede volver a marca la opción que crea problemas. ¿Por qué una actualización debe poder cambiar mis opciones? Eso se lo preguntas a ADOBE, porque yo no le encuentro ningún sentido).

Vas a preferencias de impresión en la impresora PDF y desmarcas la opción utilizar solo fuentes del sistema (como está en la imagen de abajo)

Visitas: 36

HowTo aumentar el numero de tokens que admite copilot BING desde EDGE

Vas a la pagina del Chat ampliada :

https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=undexpand

o pulsas el boton de ampliar el chat desde el panel lateral

abre el devTools (inspect) con F12 y posteriormente elige la opcion de seleccionar elemento para inspeccionarlo (Ctrl+Shift+C)

pones el cursor en la la casilla del promt para ver la propiedad maxlength. se hace doble click en el 2000 y se cambia por 10000

y en el navegador verás que cambia el maximo de caracteres disponibles

Antes

despues. admite más de los 4000 que indica el limite de promt

Pero hay que repetir todo el proceso cada vez que sales del foco de la pagina

Visitas: 273

How to biblioteca UPV encontrar libros de un departamento

No resulta evidente como localizar En Polibuscador los fondos que forman parte de la colección de un Departamento. Te explico cómo hacerlo en esta entrada. Abrimos Polibuscador: https://polibuscador.upv.es/ , en la caja de búsqueda hay que poner un asterisco: *, para que busque todos los libros (si sabes el tema o titulo aproximado puedes usar la busqueda más orientada).

Después, desde los filtros de la derecha, en la pestaña “Biblioteca” es posible seleccionar departamentos (además de Bibliotecas). Es decir los libros de un departamento se consideran una “biblioteca” departamental.

Por ejemplo, para localizar los del Dpto. Organización de empresas serían: https://acortar.link/gvNSdo

Visitas: 63

How_to reutilizar texto en un documento word

Hay varias formas de definir un texto que puedas reutilizar automáticamente en otras secciones de un documento WORD.

Una de ellas es utilizar los controles de contenidos en modo diseño de la barra de programador para la introducción de la primera instancia de un dato a repetir.

Y luego usar Marcadores (para cambiar o etiquetar el nombre de un dato) -si el nombre que etiqueta por defecto el control de contenidos no es interactivo) e insertar/elementos rápidos/campo y el tipo de campo REF

PD: para identificar el marcador de los controles de contenidos, puedes ir a marcadores seleccionar uno y que te lleve (ir) para ver cuál es

Referencia (el video es un poco pesado y lento, en 3-4 minutos se podría haber ido al grano): https://www.youtube.com/watch?v=pjckdkC6bhw 

Visitas: 119

En la vida real los grupos de trabajo no se forman eligiendo gente al azar. Por favor, si eres docente deja de difundir ese mensaje falso.

Este es un mensaje para mis colegas profesores-as de universidad. Desde el cariño, por favor, dejad de usar este argumento para justificar que vais a crear grupos aleatorios de alumnos-as: “los alumnos no deben elegir a sus compañeros de equipo porque en “la vida real” no elegirán a sus compañeros de trabajo”. Es falso.
En las organizaciones reales jamás se crearán grupos aleatorios. Toda persona es seleccionada y filtrada antes de entrar en una organización y cada composición de equipo está pensada y diseñada. La gente de RRHH (cuando la empresa tiene dimensión para ello) ayuda en el proceso.
#gioi #RRHH #acededot

Pearlstein, J. (2020). Experiential exercise in team formation in the capstone: Providing students with the information to make good team choices. Journal of Management Education, 1052562920938071. doi:10.1177/1052562920938071

Visitas: 78

Negative or Net suppression/reciprocal or cooperativa suppression in mediated or PLS- SEM models

The negative sign in the path  or weight means “negative or net suppression”. This is a common issue when using several variables correlated in the same model. The tricky issue is that all variables are positively related wth SC-Ad (se latent variable correlations in 2nd order HOC model), but you can observe a negative value in the path. How can this be possible? It is well documented in mediation analysis (i.e., Ato & Vallejo, 2011 page 558), and it is explained by the relative “impact” of the predictors on the dependent variable. The predictor less correlated with the dependent variable is used to “compensate” the “inflate” paths for the other predictors. The negative or net suppression occurs when all the variables have a high positive correlation among themselves (rXY, rXZ, rZY > 0), but the regression coefficient of one of the variables is negative. Reciprocal or cooperative suppression occurs when two variables are negatively correlated with each other, but both are positively correlated with the outcome variable.

Inconsistent Mediation (from Mediation (David A. Kenny) (davidakenny.net))

"If c' were opposite in sign to ab something that MacKinnon, Fairchild, and Fritz (2007) refer to as inconsistent mediation, then it could be the case that Step 1 would not be met, but there is still mediation. In this case the mediator acts like a suppressor variable. One example of inconsistent mediation is the relationship between stress and mood as mediated by coping. Presumably, the direct effect is negative: more stress, the worse the mood. However, likely the effect of stress on coping is positive (more stress, more coping) and the effect of coping on mood is positive (more coping, better mood), making the indirect effect positive. The total effect of stress on mood then is likely to be very small because the direct and indirect effects will tend to cancel each other out. Note too that with inconsistent mediation that typically the direct effect is even larger than the total effect."

  

Ato, M., & Vallejo, G. (2011). Los efectos de terceras variables en la investigación psicológica. Anales de Psicología, 27(2), 550-561. http://digitum.um.es/jspui/handle/10201/26561

 

Conger, A. J. (2016). A Revised Definition for Suppressor Variables: a Guide To Their Identification and Interpretation. Educational and Psychological Measurement, 34(1), 35-46. https://doi.org/10.1177/001316447403400105
Gaylord-Harden, N. K., Cunningham, J. A., Holmbeck, G. N., & Grant, K. E. (2010). Suppressor effects in coping research with African American adolescents from low-income communities. J Consult Clin Psychol, 78(6), 843-855. https://doi.org/10.1037/a0020063
Krus, D. J., & Wilkinson, S. M. (1986). Demonstration of properties of a suppressor variable. Behavior Research Methods, Instruments, & Computers, 18(1), 21-24. https://doi.org/10.3758/BF03200988
MacKinnon, D. P., Krull, J. L., & Lockwood, C. M. (2000). Equivalence of the Mediation, Confounding and Suppression Effect. Prevention Science, 1(4), 173-181. https://doi.org/10.1023/A:1026595011371

Visitas: 72