Я записую свій робочий стіл за допомогою 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
, здається, не працює.
ceil
натомість,trunc
щоб отримати більше парне число у випадку 16: 9 480p