Змініть розмір відео з різною шириною до фіксованої висоти, зберігаючи співвідношення сторін за допомогою ffmpeg


17

Я хотів би перетворити багато відеофайлів у флеш-відео для веб-сайту нашої компанії. У мене є вимога, що всі відео мають бути у форматі 360p, тому їх розмір буде Nx360.

FFMPEG використовує -s аргумент , щоб вказати цільове дозвіл , як W х H . Я не знаю W idth, оскільки це залежить від співвідношення сторін вихідного файлу. Якщо джерело 640x480, ціль буде 480x360. Якщо джерело 848x480, ціль буде 636x360.

Чи є спосіб це зробити за допомогою перемикача ffmpeg? Що воно збереже співвідношення сторін, і я вкажу лише висоту цільового відео?

Я міг би легко це вирішити, створивши програму, яка запустить ffprobe, щоб отримати розмір вихідного відео, обчислити пропорцію, а потім обчислити нову ширину.

Відповіді:


15

Ви можете спробувати додати цей відеофільтр:

-vf "scale=-1:360" 

-1 в цьому випадку означає змінну / невідомо, таким чином цей фільтр змінює розмір відео для збереження співвідношення сторін вводу, зберігаючи 360 як висоту.

Для мене це досягло того самого результату, який ви шукаєте.



6

Ще не вистачає балів, щоб коментувати існуючу відповідь, але це слідкує за відповіддю користувача65600 і йде далі, коли конкретні кодеки вимагають ширини / висоти, що ділиться на 2 (наприклад, libx264)

Якщо ви використовуєте -1 (змінна / невідома), вона може повернути непарне #. Щоб гарантувати рівний #, ви повинні використовувати щось на зразок trunc(ow/a/2)*2, яке автоматично обчислює найближчий парний #, зберігаючи співвідношення сторін.

-vf "scale=trunc(ow/a/2)*2:360"

Джерело: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" не працює через помилку "самопосилання".

Натомість працює наступне:

-vf "шкала = -1: 360, масштаб = trunc (iw / 2) * 2: 360"

Таким чином, самостійне посилання дозволяє уникнути двох послідовних масштабувань, а округлення відбувається на другому кроці. Симпатично, чи не так? :)


Простий фільтр 'шкала = -1: 480; scale = trunc (iw / 2) * 2: 480 'не має рівно одного входу та виходу. Помилка відкриття фільтрів!
digitalPBK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.