Esquerda direita

Esquerda direita

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)

insira a descrição da imagem aqui

Saída (1280x800)

insira a descrição da imagem aqui

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

Filtro diferente em cada lado
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 éxbre 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 parahstackdeve 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

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

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

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 paravstackdeve 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

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

informação relacionada