Відображення масштабу відео FFmpeg


1

По-перше, я просто хочу сказати трохи більше про свою назву, я не маю на увазі той факт, що збільшення масштабу не додає даних (як це часто запитують при підвищенні масштабу) - але щось інше.

Приклад

У мене є сире відео A1 (854x480)

Я кодую від А1 до В1 ігноруючу шкалу - тому зберігаю ту саму 854x480.

ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 C:\B1.mkv

Я відтворюю це відео в програвачі, і збільшую його, збільшуючи вікно програвача, зараз це відео 1092x614, я зберігаю скріншот кадру 88.

Я тепер кодую A1 до C1 із зазначенням масштабу 1092x614 (як і скріншот, який ми маємо)

ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 -filter_complex scale=1092:614 C:\C1.mkv

Я зберігаю скріншот кадру 88 у C1 на його рідному екрані - 1092x614

Оскільки я використовую Raw Original для обох кодувань, я припускав, що обидва знімки екрана будуть виглядати однаково - але вони не роблять, що перевищує масштаб коду C1 набагато гіршої якості порівняно з кодовим B1 розширеного коду.

Я думав, що коли я збільшую масштаб вручну зі своїм плеєром і бачу зображення, ffmpeg робить те саме під час його кодування - тому він бачив би те саме зображення, яке я бачу, і будує кодування на основі цього, але його як би двигун візуалізації ffmpeg використовує: різні / не такі хороші.

Чи є спосіб обійти це питання?

Чи можемо ми досягти подібного різною технікою? Наприклад, редагування метаданих Original Raw A1 та встановлення Ширини: Висота - змушує будь-який програвач відкривати відео такого розміру, несвідомо збільшуючи його масштаб під час відтворення.

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


3
масштаб просто робить необмеженим інтерполятом, пропонується додати -sws_flags lanczos + точно_rnd + full_chroma_int + full_chroma_inp, щоб мати кращий фільтр розміру для масштабу. дивіться тут ffmpeg-users.933282.n4.nabble.com/… для багатьох методів інтерполяції, іноді гравці можуть використовувати прості білінеарні або двостулкові.
Psycogeek

Спробуйте проміжний крок спочатку масштабувати сировинний вміст, а потім зробити кодування. Я виявив, що фільтр може змінювати деякі параметри. CRF може бути за замовчуванням до 23 (підвищення якості), але попередньо встановлений за замовчуванням до середнього (можливе зниження). Незважаючи на це, це допоможе вирішити проблему.
dstob
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.