verticales - FFmpeg: cómo convertir video vertical con lados negros, a video 16: 9, con lados de fondo borroso
rellenar video vertical filmora (4)
¿Cómo hacer esto usando FFmpeg?
Ejemplo sin FFmpeg:
Adobe After Effects
Sony Vegas Pro
¡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 mucho cálculo innecesario. No necesitamos difuminar los píxeles, lo que definitivamente sabemos que quedará fuera de la vista 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 de él.
Below example assumes that input video has greater
aspect ratio than output video.
┌─────────────┐
┌─────────────┐ │ │
│ Input video │ │ Output │
│ │ │ video │
└─────────────┘ │ │
│ │
└─────────────┘
Vamos a utilizar filtro gráfico para lograr esto. 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 conseguir que ninguna de las soluciones anteriores proporcionadas funcionara con ffmpeg 3.4.2 en Windows.
Sin embargo esto funcionó:
ffmpeg -i <input_file> -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" <output_file>
No olvide reemplazar <input_file>
y <output_file>
con los nombres de archivo apropiados.
Puedes intentar superponer el video en una imagen borrosa como esta.
ffmpeg -i input_video -loop 1 -i input_image -t 10 -filter_complex "
[0:v]scale=-1:720[scaled_video];
[1:v]scale=1280:720,boxblur=50[blur_image];
[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" -c:v libx264 -aspect 1280/720 -map [outv] -map 0:a -c:a copy output_video
La imagen de entrada se pasará a lo largo de la duración del video de salida en -loop 1
. Y -t 10
limitará la duración del video de salida a 10 segundos. En este ejemplo, utilicé 1280: 720 como la resolución de video de salida y ajusté las entradas para que coincidan con esta proporción. 0:v
refiere al video de entrada y se escalará a la altura de 720, donde el ancho se ajustará en consecuencia.
Aquí boxblur
filtro boxblur
donde hay varios otros como sab
, smartblur
y smartblur
. map
obtendrá los flujos de entrada procesados especificados y los asignará al flujo de salida correspondiente.
¡Espero que esto te ayudará!