ffmpeg / avconv сила масштабування виходу ділиться на 2


10

Я записую свій робочий стіл за допомогою avconv (aka ffmpeg), а потім масштабую його до 720p.

Нещодавно я додав до свого сценарію, щоб вони могли вибрати вікно з xwininfo, і воно запише конкретно це.

Однак якщо вихідний формат не ділиться на 2, кодер вироджується, і я не отримую своє відео.

Чи є спосіб виправити це всередині ffmpeg, щоб мені не довелося робити купу ручної математики в bash, щоб встановити значення шкали?

Чи можливо фільтр масштабу відняти / додати його до ширини / висоти, якщо вони нерівні? (круглі?)

Чи можливо застосувати інший фільтр після оригінальної шкали, яка могла б це досягти? (Це призведе до круглого відео, яке має нерівномірний розмір вводу та не має масштабування)

#!/bin/bash
avconv \
-f x11grab -r $fps -s $capturesize -i :0.0$offset \
-vcodec libx264 \
-vf scale=-1:720 \
-pre:v lossless_ultrafast \
-threads 4 \
-y $@

Деякі старі списки розсилки пропонують round()функцію, яку ви можете використовувати у фільтрі, але я не можу зрозуміти правильний синтаксис. Якщо він працює, scale=round(iw,2):round(ih,2)застосований в кінці фільтр вирішив би всі мої проблеми відразу. iwі ih, здається, не працює.

Відповіді:


9

Оскільки іноді ділення на 2 рази має непарні числа, воно повинно бути:

-vf scale="trunc(oh*a/2)*2:720"

Це виконує те, що хотілося б із -1:720синтаксисом (зберегти початкове співвідношення сторін)


Я використовую ceilнатомість, truncщоб отримати більше парне число у випадку 16: 9 480p
Феліпе Алькасібар

8

Насправді фільтр може працювати з ним безпосередньо. Вам потрібно лише пройти -2замість -1фільтра: напр

-vf scale="-2:720"

Я здивувався, дізнавшись це у звіті про помилки від 3 років тому .


Не працювали для мене, яка мінімальна версія підтримує це?
letmaik

3
-2 працює для мене у версії ffmpeg 2.3.3
Lance Nanek

7

Після багатьох експериментів виглядає, що наступний фільтр, застосований після інших масштабних фільтрів, округлятиме ширину та висоту до 2.

scale=trunc(in_w/2)*2:trunc(in_h/2)*2

Це, в основному, поділ, кругле, багатозначне, я просто не мав правильного синтаксису.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.