¿Necesitas exportar un video desde PowerPoint con un número de fotogramas por segundo específico, como 24, 25, 29.97 o 60 FPS? Aunque la interfaz no permite fijarlo, puedes controlarlo con un macro VBA o, en su defecto, reconvertir el archivo con FFmpeg o HandBrake.
Cambiar el FPS al exportar video desde PowerPoint
PowerPoint exporta videos MP4 o WMV con una configuración predeterminada de fotogramas por segundo que, en la práctica, suele rondar los ~30 FPS. Esta cadencia funciona bien para la mayoría de presentaciones, pero no siempre es la adecuada. Si vas a publicar en entornos cinematográficos (24 FPS), en regiones con estándar PAL (25 FPS), o buscas ultra fluidez (50/60 FPS), querrás fijar un valor distinto.
La interfaz de PowerPoint no ofrece un selector de FPS, pero el modelo de objetos sí: el método CreateVideo
incluye el parámetro FramesPerSecond
. Con un breve macro puedes exportar con el FPS que tú elijas y, además, ajustar resolución y calidad.
Por qué importa el FPS
- Consistencia visual: La mezcla de material a 24, 25, 29.97 o 60 FPS puede generar “tirones” al publicar o montar.
- Compatibilidad de plataforma: Algunas plataformas estandarizan a 24/25/30/60 FPS; si subes en otro valor, re-convierten.
- Tamaño de archivo: A mayor FPS, más fotogramas por segundo se codifican; si mantienes calidad constante, el peso puede aumentar.
- Legibilidad: Animaciones sutiles y efectos de transición se benefician de 50/60 FPS; para vídeos tipo “diapositiva + voz”, 24/25/30 suelen ser suficientes.
Solución nativa con VBA
Lo más cómodo es automatizar la exportación con un macro. PowerPoint 2019 admite el método ActivePresentation.CreateVideo
con estos parámetros clave:
Parámetro | Qué hace | Valores típicos | Notas prácticas |
---|---|---|---|
FileName | Ruta y nombre del MP4 de salida. | C:\Videos\miVideo.mp4 | Evita rutas sincronizadas si ves errores; usa una carpeta local y nombres cortos. |
UseTimingsAndNarrations | Respeta tiempos/narraciones grabados por diapositiva. | True / False | Si es False , aplica DefaultSlideDuration a las diapositivas sin tiempos. |
DefaultSlideDuration | Segundos por diapositiva si no hay tiempos grabados. | 5, 8, 10… | Útil para presentaciones autoejecutables sin locución. |
VertResolution | Altura del video en píxeles (la anchura se calcula por aspecto). | 480, 720, 1080, 1440, 2160 | Selecciona según destino: 1080p suele ser el equilibrio ideal; 2160p genera archivos mucho mayores. |
FramesPerSecond | FPS de exportación | 24, 25, 29.97, 30, 50, 60 | Algunas instalaciones redondean a enteros; si 23.976 no se respeta, usa 24. |
Quality | Calidad de codificación | 1–100 | Valores altos = mejor calidad y mayor peso; 85–100 suele rendir bien. |
Paso a paso para habilitar macros
- Abre tu presentación y guarda como Presentación habilitada para macros (.pptm): Archivo > Guardar como > .pptm.
- Activa la pestaña Desarrollador: Archivo > Opciones > Personalizar cinta y marca Desarrollador.
- En Desarrollador > Macros, escribe un nombre (p. ej., ExportarVideoFPS) y haz clic en Crear.
Código mínimo listo para usar
Copia y pega el siguiente procedimiento entre Sub ... End Sub
y ejecútalo con F5. El archivo se guardará en tu Escritorio, evitando problemas comunes con rutas redirigidas a OneDrive.
Sub ExportarVideoFPS()
Dim destino As String
' Obtiene la ruta real del Escritorio (funciona tanto si está en OneDrive como local)
destino = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Test.mp4"
If ActivePresentation.CreateVideoStatus <> ppMediaTaskStatusInProgress Then
ActivePresentation.CreateVideo _
FileName:=destino, _
UseTimingsAndNarrations:=True, _ ' Usa tiempos y narraciones grabados
DefaultSlideDuration:=10, _ ' Segundos por diapositiva si no hay tiempos
VertResolution:=1080, _ ' 480, 720, 1080, 1440, 2160...
FramesPerSecond:=25, _ ' 24, 25, 29.97, 30, 50, 60
Quality:=100 ' 1–100
End If
MsgBox "Creando video..."
End Sub
Notas: puedes ajustar FramesPerSecond
a los valores que necesites. En algunos equipos los valores no enteros (p. ej., 23.976 o 29.97) pueden redondearse; si no se respetan, emplea el entero más cercano (24 o 30). Para verificar el FPS final, examina las propiedades del archivo o usa un analizador como MediaInfo.
Versión mejorada con selector de carpeta y espera
Este ejemplo te permite elegir el nombre y la carpeta de destino, y espera a que termine la exportación. Mantiene la interfaz receptiva con DoEvents
.
Option Explicit
Sub ExportarVideoFPSInteractivo()
Dim dlg As FileDialog
Dim destino As String
Dim nombre As String
Dim ruta As String
Dim fps As Double
Dim altura As Long
Dim calidad As Long
' Parámetros interactivos
fps = Val(InputBox("FPS de salida (24, 25, 29.97, 30, 50, 60):", "FPS", "25"))
If fps <= 0 Then Exit Sub
altura = CLng(Val(InputBox("Altura del video (480, 720, 1080, 1440, 2160):", "Resolución vertical", "1080")))
If altura <= 0 Then Exit Sub
calidad = CLng(Val(InputBox("Calidad 1–100 (100 = máximo):", "Calidad", "100")))
If calidad <= 0 Then Exit Sub
' Elegir carpeta de destino
Set dlg = Application.FileDialog(msoFileDialogSaveAs)
With dlg
.InitialFileName = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Exportado.mp4"
.Title = "Guardar video"
.FilterIndex = 1
If .Show <> -1 Then Exit Sub
destino = .SelectedItems(1)
End With
' Asegura extensión .mp4
If LCase$(Right$(destino, 4)) <> ".mp4" Then destino = destino & ".mp4"
' Lanza la exportación si no hay otra en curso
If ActivePresentation.CreateVideoStatus <> ppMediaTaskStatusInProgress Then
ActivePresentation.CreateVideo _
FileName:=destino, _
UseTimingsAndNarrations:=True, _
DefaultSlideDuration:=10, _
VertResolution:=altura, _
FramesPerSecond:=fps, _
Quality:=calidad
Else
MsgBox "Ya hay una exportación en progreso.", vbExclamation
Exit Sub
End If
' Espera hasta que finalice (no hay porcentaje disponible en el objeto)
Do While ActivePresentation.CreateVideoStatus = ppMediaTaskStatusInProgress
DoEvents
PausaSegundos 1
Loop
Select Case ActivePresentation.CreateVideoStatus
Case ppMediaTaskStatusDone
MsgBox "Video creado correctamente en:" & vbCrLf & destino, vbInformation
Case ppMediaTaskStatusFailed
MsgBox "La exportación ha fallado. Revisa la ruta de destino y los permisos.", vbCritical
Case Else
MsgBox "La exportación se ha detenido.", vbExclamation
End Select
End Sub
Private Sub PausaSegundos(ByVal s As Single)
Dim t As Date
t = Now + TimeSerial(0, 0, s)
Do While Now < t
DoEvents
Loop
End Sub
Valores recomendados según uso
Escenario | FPS sugerido | Resolución sugerida | Comentarios |
---|---|---|---|
Cinemático / estilo tráiler | 24 | 1080p | Aspecto “film look”, transiciones suaves con tiempos más largos. |
Difusión en regiones PAL | 25 | 1080p | Mantiene paridad con contenidos a 50 Hz. |
Web general / e-learning | 30 | 1080p | Equilibrio entre fluidez y tamaño; óptimo para screencasts. |
Animaciones con mucho movimiento | 50 o 60 | 1080p o 1440p | Mayor claridad en efectos rápidos; tamaño de archivo superior. |
Material legado NTSC | 29.97 | 1080p | Útil si integras capturas históricas a 29.97. |
Alternativa sin VBA
Si no quieres habilitar macros, puedes exportar con los valores por defecto desde PowerPoint y fijar el FPS deseado mediante un transcodificador. FFmpeg y HandBrake son opciones populares.
FFmpeg en una línea
Este comando reescribe el archivo a 23.976 FPS, H.264 y audio AAC. Ajusta -r
, -crf
y -preset
según tus necesidades.
ffmpeg -i entrada.mp4 -r 23.976 -vsync cfr -c:v libx264 -pixfmt yuv420p -crf 18 -preset medium -c:a aac -b:a 192k salida23.976.mp4
-r
: FPS de salida (colócalo después de-i
para forzar la velocidad del flujo generado).-vsync cfr
: genera una cadencia constante de fotogramas (menos sorpresas en reproductores exigentes).-crf
: control de calidad (menor valor = mejor calidad; 18–20 es un punto de partida sólido).-preset
: velocidad de codificación (más lento = mejor compresión).
Variantes útiles de FFmpeg
# Reusar audio sin recodificar si ya está en AAC
ffmpeg -i entrada.mp4 -r 30 -vsync cfr -c:v libx264 -pixfmt yuv420p -crf 19 -preset slow -c:a copy salida30.mp4
Producir 60 FPS para animaciones muy fluidas
ffmpeg -i entrada.mp4 -r 60 -vsync cfr -c\:v libx264 -pix\fmt yuv420p -crf 20 -preset medium -c\:a aac -b\:a 160k salida\60.mp4
HandBrake con interfaz gráfica
- Abre el archivo exportado desde PowerPoint.
- En Video, marca Constant Framerate y elige la opción de FPS deseada.
- Selecciona el códec H.264/H.265, calidad Constant Quality 20–22 (H.264) como punto de partida.
- Guarda y convierte.
HandBrake es ideal si no te sientes cómodo con la línea de comandos.
Diagnóstico de errores de exportación
Si la exportación falla o PowerPoint no avanza, suele deberse a la ruta de guardado o a un proceso que bloquea el archivo de destino. A continuación, los síntomas más frecuentes y cómo corregirlos.
Síntoma | Causa probable | Solución |
---|---|---|
Error al iniciar la exportación | Ruta en Escritorio sincronizado con OneDrive, permisos o nombre demasiado largo. | Exporta a una carpeta local como C:\Temp\ o usa SpecialFolders("Desktop") en el macro. Acorta el nombre del archivo. |
Estado “InProgress” indefinido | Exportación pesada o archivo de salida en uso por otro proceso. | Cierra reproductores que apunten a ese archivo y espera a que finalice. Cambia de carpeta y vuelve a intentarlo. |
FPS final no coincide | El valor fraccional se redondeó; el reproductor informa aproximado. | Usa 24/25/30/60 si 23.976/29.97 no se respetan. Verifica con una herramienta de análisis en lugar del reproductor. |
Macro no se ejecuta | Macros deshabilitadas por la directiva de seguridad. | Habilita macros para ese archivo o firma digitalmente tu macro. Alternativamente, usa la ruta de FFmpeg. |
Cuelgues o artefactos en video | Controladores gráficos o fuentes/medios enlazados problemáticos. | Actualiza controladores, incrusta fuentes o reemplaza medios dañados. Quita animaciones excesivas en la diapositiva afectada. |
Comprobación del FPS real
- En Windows, ve a Propiedades > Detalles del archivo MP4 (puede mostrar redondeos).
- Utiliza un analizador especializado para ver el valor exacto y si el flujo es CFR o VFR.
Buenas prácticas de exportación
- Constancia de formato: Exporta todo el proyecto al mismo FPS para evitar tirones en montaje.
- Sonido sincronizado: Con narraciones, activa
UseTimingsAndNarrations:=True
para preservar pausas y transiciones. - Resolución y relación de aspecto: Diseña en 16:9 si vas a 1080p o 2160p; evita mezclar formatos verticales.
- Tipografías incrustadas: Archivo > Opciones > Guardar > Incrustar fuentes para evitar sustituciones.
- Pruebas cortas: Antes de lanzar un render de 30 minutos, exporta 2–3 diapositivas para validar FPS y peso de archivo.
Flujos de trabajo avanzados
Exportar por lotes múltiples presentaciones
Si tienes varias presentaciones, este macro recorre una carpeta y exporta cada .pptx/.pptm
a MP4 con el mismo FPS, resolución y calidad.
Option Explicit
Sub ExportarCarpetaAFPS()
Dim fldr As FileDialog, ruta As String
Dim fps As Double, altura As Long, calidad As Long```
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
fldr.Title = "Carpeta con presentaciones"
If fldr.Show <> -1 Then Exit Sub
ruta = fldr.SelectedItems(1)
fps = Val(InputBox("FPS:", "FPS", "30"))
altura = CLng(Val(InputBox("Altura (480/720/1080/1440/2160):", "Resolución", "1080")))
calidad = CLng(Val(InputBox("Calidad 1–100:", "Calidad", "95")))
Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
Dim carpeta As Object: Set carpeta = fso.GetFolder(ruta)
Dim archivo As Object
Dim pres As Presentation, salida As String
For Each archivo In carpeta.Files
If LCase$(fso.GetExtensionName(archivo.Path)) = "pptx" Or LCase$(fso.GetExtensionName(archivo.Path)) = "pptm" Then
Set pres = Presentations.Open(archivo.Path, WithWindow:=msoFalse)
salida = fso.BuildPath(carpeta.Path, fso.GetBaseName(archivo.Path) & "_" & Replace(CStr(fps), ".", "_") & "fps.mp4")
If pres.CreateVideoStatus <> ppMediaTaskStatusInProgress Then
pres.CreateVideo salida, True, 10, altura, fps, calidad
Do While pres.CreateVideoStatus = ppMediaTaskStatusInProgress
DoEvents
PausaSegundos 1
Loop
End If
pres.Close
End If
Next archivo
MsgBox "Exportación por lotes finalizada.", vbInformation
```
End Sub
Private Sub PausaSegundos(ByVal s As Single)
Dim t As Date
t = Now + TimeSerial(0, 0, s)
Do While Now < t
DoEvents
Loop
End Sub
Plantilla parametrizable para tu equipo
Si exportas con frecuencia al mismo estándar, crea un módulo con constantes:
Public Const FPS_OBJETIVO As Double = 25
Public Const ALTURA As Long = 1080
Public Const CALIDAD As Long = 100
Y llama a CreateVideo
con esas constantes. Así todo el equipo exportará con la misma “receta”.
Preguntas frecuentes
¿Puedo fijar 29.97 FPS exactos?
Sí, el parámetro acepta fracciones; sin embargo, en algunas instalaciones puede redondearse a 30. Si observas redondeo, usa 30 o reescribe con FFmpeg a 29.97.
¿El parámetro VertResolution
acepta cualquier valor?
Acepta valores habituales (480, 720, 1080, 1440, 2160). Si introduces uno no estándar, PowerPoint puede ajustar automáticamente a la escala más cercana.
¿Qué pasa si cierro PowerPoint durante la exportación?
Se interrumpe el proceso y el archivo resultante puede quedar corrupto o incompleto. Espera a que CreateVideoStatus
deje de estar en progreso.
¿Puedo usar Guardar como > MP4 en lugar de macros?
Sí, pero no podrás fijar el FPS. Es útil para casos “rápidos” con la configuración por defecto.
El Escritorio está en OneDrive y la exportación falla
Usa el método robusto del ejemplo (SpecialFolders("Desktop")
) o exporta a una carpeta local (p. ej., C:\Temp\
).
¿Cómo mantengo el tamaño del archivo bajo control?
Reduce Quality
en CreateVideo
o usa -crf
más alto en FFmpeg (p. ej., 21–23). Prueba con clips cortos hasta hallar el equilibrio.
Resumen operativo
- PowerPoint no tiene control de FPS en la interfaz, pero sí en el modelo de objetos con
CreateVideo
. - Un macro de pocas líneas te permite exportar al FPS exacto que necesites (24/25/29.97/30/50/60), regulando también resolución y calidad.
- Si prefieres no usar macros, exporta con los valores por defecto y reconvierte el archivo a tu FPS objetivo con FFmpeg o HandBrake.
- Ante errores, revisa la ruta de salida (OneDrive/Escritorio), permisos y nombres de archivo largos; prueba con una carpeta local.
Checklist para no fallar
- Define FPS objetivo acorde al destino (24/25/30/60).
- Establece
UseTimingsAndNarrations
según si tienes locución/tiempos. - Elige
VertResolution
yQuality
según calidad/peso deseado. - Verifica el FPS real del archivo final con una herramienta confiable.
- Si hay errores, exporta a
C:\Temp\
o usaSpecialFolders("Desktop")
, y cierra aplicaciones que usen el archivo objetivo.
Solución paso a paso recomendada
- Guarda la presentación como .pptm y habilita la pestaña Desarrollador.
- Crea el macro ExportarVideoFPS y pega el código mínimo del ejemplo.
- Ajusta
FramesPerSecond
al valor deseado yVertResolution
a 1080. - Ejecuta el macro. Si surge un error, cambia la ruta a una carpeta local no sincronizada.
- Comprueba el FPS final y el peso. Si necesitas afinar, reexporta o reconvierte con FFmpeg.
En conclusión: sí, puedes fijar un FPS personalizado directamente desde PowerPoint mediante un macro VBA con CreateVideo(... FramesPerSecond:=...)
. Si prefieres evitar macros, exporta y reescribe el FPS con un transcodificador externo. Con estas dos vías tendrás control total sobre la cadencia de tus videos sin abandonar tu flujo de trabajo en PowerPoint.