Saltar al contenido

FFmpeg: Cómo convertir video vertical con lados negros, a video 16:9, con lados de fondo borrosos

Este artículo ha sido evaluado por especialistas así se asegura la exactitud de nuestro contenido.

Solución:

¡Lo resolví!

ffmpeg -i input.mp4 -lavfi '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h,w)/20:luma_power=1:chroma_radius=min(cw,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' -vb 800K output.webm

Entrada: https://www.youtube.com/watch?v=17uHCHfgs60
Salida: http://www.youtube.com/watch?v=CgZsDLfzrTs

La respuesta aceptada aquí tarda una eternidad en ejecutarse porque está haciendo muchos cálculos innecesarios. No necesitamos desenfocar los píxeles que definitivamente sabemos que estarán fuera de la ventana gráfica en el video de salida.

Entonces, una mejor solución sería recortar primero la parte del video que será visible en la salida. Luego escalamos esta parte para “llenar” la ventana gráfica. Finalmente, superponemos el video original encima.

Below example assumes that input video has greater
aspect ratio than output video.
                    ┌─────────────┐
┌─────────────┐     │             │
│ Input video │     │   Output    │
│             │     │   video     │
└─────────────┘     │             │
                    │             │
                    └─────────────┘

Usaremos el gráfico de filtro para lograr esto. A nuestro filtro le gustará a continuación en notación de puntos:

                [original]
 input --> split -------------------------------> overlay --> output
        │                                          ^
        │[copy]                           [blurred]│
        └──────> crop ──> scale ──> gblur ─────────┘

Suponiendo que la resolución para el video de entrada es 1280 x 720, el comando se ve a continuación:

ffmpeg -i input.mp4 -vf 'split [original][copy]; [copy] crop=ih*9/16:ih:iw/2-ow/2:0, scale=1280:2282, gblur=sigma=20[blurred]; [blurred][original]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2' output.mp4

No pude hacer que ninguna de las soluciones anteriores funcionara con ffmpeg 3.4.2 en Windows.

Sin embargo, esto funcionó:

ffmpeg -i  -filter_complex "[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h,w)/20:luma_power=1:chroma_radius=min(cw,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16" 

No olvides reemplazar y con los nombres de archivo apropiados.

valoraciones y reseñas

Finalizando este artículo puedes encontrar las observaciones de otros usuarios, tú todavía tienes el poder dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *