左右

左右

我需要使用 DOS 遊戲放大視頻FFmpeg。但與最近鄰插值在左側和xBR過濾另一張。

輸入 (320x200)

在此輸入影像描述

輸出 (1280x800)

在此輸入影像描述

這是一個命令,xBR 處理整個螢幕的位置...

ffmpeg
    -i input.avi
    -sws_flags neighbor
    -vcodec libx264 -strict -2
    -preset veryslow -qp 0
    -filter:v "xbr=4"
    output.mp4

答案1

左右

每側都有不同的過濾器
我裁剪了圖像以使輸出尺寸更小,只是為了顯示目的。

這將在每一面顯示整個影片。左邊是xbr右邊是scale

使用hstack

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

所有輸入流至hstack必須具有相同的像素格式和相同的寬度。

使用pad&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

此方法比僅使用更慢且更複雜hstack


左、右:附 10 像素邊框

附 10 像素邊框

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

分割畫面:左、右

分割畫面:左、右

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

頂部和底部

頂部和底部

使用vstack

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

所有輸入流至vstack必須具有相同的像素格式和相同的寬度。

使用pad&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

此方法比僅使用更慢且更複雜vstack


分割畫面:頂部和底部

分割畫面:頂部和底部

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

相關內容