Как ffmpeg может масштабировать видео до одинакового размера, сохраняя соотношение сторон? - PullRequest
0 голосов
/ 04 апреля 2020

(Я искал похожие вопросы и не нашел ничего, что работает так, как я описываю здесь.)

У меня есть несколько видео с различными образцами и аспектами отображения rat ios (и с разными частотами кадров и временные рамки). Я хочу объединить их в одно длинное видео, например плейлист, что означает их перекодирование. Я хочу, чтобы они увеличивались или уменьшались, чтобы соответствовать желаемому выходному размеру (768x432), сохраняя их соотношение сторон при помощи pillarboxing, когда это необходимо.

Я пробовал -vf scale=768:432:force_original_aspect_ratio=decrease,pad=768:432:(ow-iw)/2:(oh-ih)/2, который производит видео 768x432 16: 9 от входа 16: 9 ... но сжимает его вертикально и все равно добавляет пиллабокс. (Входной сигнал 720x480 с соотношением сторон образца 32:27. Ввод видео 10:11 SAR, 4: 3 DAR 704x480 работает.)

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Из того, что я могу вспомнить из своего собственного тестирования, это должно работать как для видео 16: 9, так и для видео не в формате 16: 9, я думаю, что синтаксис и порядок функции setsar влияют на результат

-filter_complex "scale=768:432:force_original_aspect_ratio=decrease,setsar=sar=1,pad=768:432:(ow-iw)/2:(oh-ih)/2"

Если это работает, и вы хотите конвертировать в максимально высокое качество, я бы посоветовал вам попробовать -filter_complex "scale=768:432:force_original_aspect_ratio=decrease:flags=lanczos+full_chroma_int+accurate_rnd,scale=trunc(iw/2)*2:trunc(ih/2)*2,setsar=sar=1,pad=768:432:(ow-iw)/2:(oh-ih)/2"

0 голосов
/ 04 апреля 2020

Фильтр весов не регулирует SAR входа. Вы должны будете использовать выражения для этого:

scale='if(gt(dar\,768/432),768,oh*dar)':'if(gt(dar\,768/432),ow/dar,432)',setsar=1,pad=...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...