![Esquerda direita](https://rvso.com/image/1451569/Esquerda%20direita.png)
Preciso ampliar o vídeo de um jogo DOS usandoFFmpeg. Mas comInterpolação do vizinho mais próximono lado esquerdo exBRfiltrar no outro.
Entrada (320x200)
Saída (1280x800)
Aqui está um comando, onde está o xBR processando a tela inteira ...
ffmpeg
-i input.avi
-sws_flags neighbor
-vcodec libx264 -strict -2
-preset veryslow -qp 0
-filter:v "xbr=4"
output.mp4
Responder1
Esquerda direita
Cortei a imagem para diminuir o tamanho da saída apenas para fins de exibição.
Isso mostrará o vídeo inteiro de cada lado. Esquerda éxbr
e certo éscale
.
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 os fluxos de entrada parahstack
deve ter o mesmo formato de pixel e a mesma largura.
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 é mais lento e complexo do que apenas usarhstack
.
Esquerda e direita: com borda de 10 pixels
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
Tela dividida: esquerda e direita
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
Superior e inferior
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 os fluxos de entrada paravstack
deve ter o mesmo formato de pixel e a mesma largura.
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 é mais lento e complexo do que apenas usarvstack
.
Tela dividida: superior e inferior
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