![Izquierda derecha](https://rvso.com/image/1451569/Izquierda%20derecha.png)
Necesito ampliar el video de un juego de DOS usandoFFmpeg. Pero conInterpolación del vecino más cercanoen el lado izquierdo yxBRfiltro en el otro.
Entrada (320x200)
Salida (1280x800)
Aquí hay un comando, ¿dónde está xBR procesando la pantalla completa?
ffmpeg
-i input.avi
-sws_flags neighbor
-vcodec libx264 -strict -2
-preset veryslow -qp 0
-filter:v "xbr=4"
output.mp4
Respuesta1
Izquierda derecha
Recorté la imagen para reducir el tamaño de salida solo con fines de visualización.
Esto mostrará el video completo en cada lado. La izquierda esxbr
y lo correcto esscale
.
Usandohstack
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor[fg]; \
[bg][fg]hstack,format=yuv420p[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Todos los flujos de entrada ahstack
debe tener el mismo formato de píxel y el mismo ancho.
Usandopad
&overlay
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4,pad=iw*2[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor[fg]; \
[bg][fg]overlay=w,format=yuv420p[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Este método es más lento y complejo que simplemente usarhstack
.
Izquierda y derecha: con borde de 10 píxeles
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4,pad=iw*2+10[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor[fg]; \
[bg][fg]overlay=w+10,format=yuv420p[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Pantalla dividida: izquierda y derecha
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor,crop=iw/2:ih:ow:0[fg]; \
[bg][fg]hstack[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Arriba y abajo
Usandovstack
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor[fg]; \
[bg][fg]vstack,format=yuv420p[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Todos los flujos de entrada avstack
debe tener el mismo formato de píxel y el mismo ancho.
Usandopad
&overlay
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4,pad=iw*2[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor[fg]; \
[bg][fg]overlay=0:h,format=yuv420p[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4
Este método es más lento y complejo que simplemente usarvstack
.
Pantalla dividida: arriba y abajo
ffmpeg -i input.avi -filter_complex \
"[0:v]xbr=4[bg]; \
[0:v]scale=iw*4:-1:flags=neighbor,crop=iw:ih/2:0:oh[fg]; \
[bg][fg]vstack[v]" \
-map "[v]" -map 0:a -movflags +faststart output.mp4