You can chain linear filters together with commas:
ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080" 240_scaled/out%d.png
- If your input has more than 20 fps, then ffmpeg will drop frames to convert to 20 fps. If your input has less than 20 fps, then ffmpeg will duplicate frames to convert to 20 fps. If you want all of the frames as is then omit the fps filter.
- I used the fps filter first because in this case, assuming your input frame rate is higher than 20 fps, it will be slightly more efficient and faster than scaling first because frames will be dropped before the scale filter.
Many players won't like the output because it won't be 4:2:0, so you can add the format filter:
ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080,format=yuv420p" 240_scaled/out%d.png
426x240 upscaled while keeping the aspect ratio is actually 1920x1082 or 1917x1080, so add pad or crop to compensate. Or refer to the force_original_aspect_ratio
option in scale. setsar is added so you don't get a weird SAR. -movflags +faststart
is added in case you are doing progressive playback.
ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:-1,crop=1920:1080,setsar=1,format=yuv420p" -movflags +faststart 240_scaled/out%d.png
zoompan
: #75056695 – Aubine