1

Во-первых, я просто хочу сказать немного больше о своем названии, я не имею в виду тот факт, что апскейлинг не добавляет данных (как часто спрашивают при апскейлинге) - но что-то другое.

пример

У меня есть сырое видео A1 (854x480)

Я кодирую A1 в B1, игнорируя шкалу - поэтому сохраняю тот же 854x480.

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

Я играю это видео в плеере и увеличиваю его, увеличив окно проигрывателя, теперь видео 1092x614, я сохраняю скриншот кадра 88.

Теперь я кодирую А1 в С1 с указанием масштаба 1092x614 (как на скриншоте у нас)

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

Я сохраняю скриншот кадра 88 в С1 с его собственным размером экрана - 1092x614

Поскольку я использую необработанный оригинал для обоих кодов, я предположил, что оба снимка экрана будут выглядеть одинаково - но это не так, масштабированный код C1 значительно хуже по сравнению с кодированным вручную масштабированным B1.

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

Есть ли способ обойти эту проблему?

Можем ли мы достичь подобного с помощью другой техники? Например, редактирование метаданных Original Raw A1 и установка Width:Height - заставить любого игрока открывать видео с таким размером, неосознанно увеличивая его при воспроизведении.

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

0