"высота не делится на 2" с "мин"

1699
Steven Penny

Используя эту команду:

ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf 'scale=-2:min(1080\,ih)' z.mp4 

Я получаю это сообщение:

[libx264 @ 00000000004d0ec0] height not divisible by 2 (954x953) 

Я могу избежать ошибки, как это:

ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf scale=-2:1080 z.mp4 

Однако это не идеально, потому что это увеличивает масштаб изображения. Как я могу масштабировать изображение, только если высота больше 1080, сохраняя при этом формат пикселя, какой у меня есть?

2

2 ответа на вопрос

2
Steven Penny

Вот что я придумал:

-vf 'scale=-2:min(1080\,trunc(ih/2)*2)' 

http://trac.ffmpeg.org/ticket/309

Или же:

-vf 'scale=-2:min(1080\,bitand(ih\,-2))' 

Или же:

-vf 'scale=-2:min(1080\,ih-mod(ih\,2))' 
Это не сработало для меня. Например: ffmpeg -r 30 -f image2 -i fft_% 05d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p fft_.mp4 -vf 'scale = -2: мин (1080 \, усечение (ih / 2) * 2 ) 'по-прежнему дает "ширину, не делимую на 2 (2265x2209)". Galen 5 лет назад 0
0
MarianD

Вместо

'scale=-2:min(1080\,ih)' 

использование

'scale=-2:min(1080\,if(mod(ih\,2)\,ih-1\,ih))' 

Он проверит, ihделится ли на 2, а если нет, то уменьшит его 1.

Похожие вопросы