6

Учитывая, что следующие блокбастеры, например, Питера Джексона («Хоббит») и Джеймса Кэмерона («Аватар 2»), будут сниматься с частотой кадров 48 кадров в секунду (или даже больше), то есть больше, чем обычные 24 кадра в секунду, мне было интересно: Насколько увеличивается размер файла закодированного видео с частотой кадров?

С увеличением fps разница между кадрами становится все меньше и меньше. Поэтому я предполагаю, что размер файла растет меньше, чем линейный. Это правда? Есть ли эмпирическое правило? Или у кого-нибудь есть примеры файлов одного и того же видео, закодированных в 24, 48, 60 и 96 кадров в секунду (с современным видеокодеком)?

(Дополнительный вопрос: насколько размер видеофайла увеличивается с размерами изображения, превышающими Full HD - например, с Full HD до 4k?)

3 ответа3

4

Единственная вещь, которая влияет на размер файла, это битрейт. Вы можете сделать 1fps или 120fps, и если ваш битрейт составляет 1000Mbs, размер файла будет точно таким же. По определению битрейт определяет размер файла. Не стесняйтесь тестировать - возьмите видео и выведите его в 10 различных измерениях и 10 различных кадрах в секунду, и вы получите одинаковые (или незначительные различия) размеры файлов.

Это упрощение, однако, если вы хотите обсудить размер файла по сравнению с качеством, тогда это совсем другое обсуждение.

3

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


Для любого текущего кодера (например, MPEG-4/AVC/h.264) частота кадров не так важна, как вы думаете. Давайте просто предположим, что нет контроля скорости, и каждое изображение кодируется с одинаковым базовым QP (параметр квантования).


Вы правы в следующем: Разница в движении (как определено в МСЭ-R P.910, хорошее чтение) между двумя кадрами видео со скоростью 48 кадров в секунду будет ниже, чем для того же видео со скоростью 24 кадра в секунду. Это связано с тем, что кадры не будут сильно отличаться друг от друга. Обратите внимание, что все временное движение не увеличивается. В конце концов, объект перемещается из точки A в B, поэтому его вектор движения будет одинаковой длины независимо от количества кадров в секунду.

Поскольку кодировщик ищет разницу между двумя (или более) кадрами и кодирует только остаточные значения, это означает, что ему придется кодировать меньшее остаточное значение для каждого изображения. В среднем это будет половина от остатка. Так что вы правы с этим. (Мы не должны забывать, что только половина остатка не означает половину данных, необходимых для его хранения. Это зависит от реализованного алгоритмического кодирования.)

Опять же, у вас вдвое больше картинок в секунду, что означает, что - в среднем - закодированная информация снова удваивается.

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


Вышесказанное относится только к B- или P-изображениям, которые зависят от других. Тем не менее, мы должны вставлять внутрикодированное изображение время от времени, которое не зависит ни от какого другого изображения. Если эта скорость внутрикадровых изображений не увеличивается, мы можем предположить линейный рост размера файла, возможно, немного больше.

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

0

Это действительно зависит от типа кодировки. Если вы снимаете видео в формате RAW, то да: больше изображений требуют большего объема памяти в линейном режиме.

Если вы кодируете захваченные изображения непосредственно в какой-то сжатый формат, то все зависит от того, как работает этот кодек.

Что касается размеров файлов, то это определяется bitrate × duration . Так что частота кадров напрямую не задействована. Чтобы достичь того же качества, что и у того же видео, закодированного с более низкой частотой кадров, вам, вероятно, придется несколько увеличить битрейт. На сколько - опять же - зависит от используемого вами кодека.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .