
tengo dos videos
- deskshare.webm 1280x720 sin audio
- webcams.webm 640x480 con audio
Los comandos que se describen a continuación funcionan según sea necesario.
ffmpeg -i deskshare.webm -i webcams.webm -filter_complex
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=w+640" out.mp4
ffmpeg -i deskshare.webm -i webcams.webm -filter_complex
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4
¿Existe alguna sintaxis que me permita deshacerme de la resolución de entrada manual del segundo video (en mi caso es 640 px)?
¿Es posible utilizar algo como [1:v]width para obtener ese valor automáticamente?
En mi caso también funciona bien esto.
ffmpeg -i deskshare.webm -i webcams.webm -filter_complex "[0:v]pad=(iw+iw/2):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4
pero esto solo funcionará si el ancho del primer video es el doble del ancho del segundo video.
Respuesta1
Esto se puede hacer de forma indirecta.
Usar
ffmpeg -i deskshare.webm -i webcams.webm -filter_complex
"[1:v][0:v]scale2ref=main_w:ih[sec][pri];
[sec]setsar=1,drawbox=c=black:t=fill[sec];[pri][sec]hstack[canvas];
[canvas][1:v]overlay=main_w-overlay_w" out.mp4
Scale2ref cambia el tamaño de una copia del video secundario a la altura del video principal manteniendo su ancho original. Luego se llena de negro y se apila a la derecha del vídeo principal.
Luego se superpone una segunda copia del vídeo secundario en el lienzo ampliado.
Necesitará ffmpeg 4.0 o posterior.