![Links rechts](https://rvso.com/image/1451569/Links%20rechts.png)
Ich muss das Video von einem DOS-Spiel vergrößern mitFFmpeg. Aber mitNächster-Nachbar-Interpolationauf der linken Seite undxBRFilter auf dem anderen.
Eingabe (320 x 200)
Ausgabe (1280 x 800)
Hier ist ein Befehl, bei dem xBR den gesamten Bildschirm verarbeitet …
ffmpeg
-i input.avi
-sws_flags neighbor
-vcodec libx264 -strict -2
-preset veryslow -qp 0
-filter:v "xbr=4"
output.mp4
Antwort1
Links rechts
Ich habe das Bild zugeschnitten, um die Ausgabegröße nur zu Anzeigezwecken zu verringern.
Dadurch wird das gesamte Video auf jeder Seite angezeigt. Links istxbr
und rechts istscale
.
Verwenden vonhstack
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
Alle Eingabeströme zuhstack
müssen das gleiche Pixelformat und die gleiche Breite haben.
Verwenden vonpad
undoverlay
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
Diese Methode ist langsamer und komplexer als die Verwendung vonhstack
.
Links & rechts: Mit 10 Pixel Rand
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
Geteilter Bildschirm: links und rechts
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
Oben unten
Verwenden vonvstack
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
Alle Eingabeströme zuvstack
müssen das gleiche Pixelformat und die gleiche Breite haben.
Verwenden vonpad
undoverlay
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
Diese Methode ist langsamer und komplexer als die Verwendung vonvstack
.
Geteilter Bildschirm: oben und unten
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