Вы можете связать линейные фильтры вместе запятыми:
ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080" 240_scaled/out%d.png
- Если ваш вход имеет более 20 кадров в секунду, то ffmpeg пропустит кадры для преобразования в 20 кадров в секунду. Если ваш ввод менее 20 кадров в секунду, то ffmpeg будет дублировать кадры для преобразования в 20 кадров в секунду. Если вы хотите, чтобы все кадры были такими, как есть, то пропустите фильтр fps.
- Сначала я использовал фильтр fps , потому что в этом случае, предполагая, что ваша частота кадров на входе выше, чем 20 кадров в секунду, он будет немного эффективнее и быстрее, чем первое масштабирование, потому что кадры будут отбрасываться до фильтра .
Многим игрокам не понравится результат, потому что он не будет 4 : 2: 0, так что вы можете добавить фильтр format :
ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080,format=yuv420p" 240_scaled/out%d.png
426x240 с масштабированием при сохранении соотношения сторон на самом деле 1920x1082 или 1917x1080, поэтому добавьте pad или обрезать для компенсации. Или обратитесь к опции force_original_aspect_ratio
в масштабе. setsar добавлено, так что вы не получите странный SAR. -movflags +faststart
добавляется в случае прогрессивного воспроизведения.
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