Сразу оговорюсь, что опыт использования потокового/покадрового сжатия у меня приобретался в охранном телевидении, так что волей-неволей будут всплывать аналогии и параллели.
Ну теперь поехали про недостатки потоковых кодеков.
1. Как я уже говорил, весь смысл потоковых кодеков - в записи произошедших изменений в наблюдаемой сцене. Раз в
ХХ секунд устройство записи делает опорный, т.е. полный кадр и следующие ХХ секунд делает видеозапись одних лишь промежуточных кадров. Более подробно описано
здесь - первая ссылка с яндекса по запросу I-кадр.
ХХ я специально выделил жирным, вернемся к опорным кадрам чуть позже.
В чем преимущества такого кодека?
1. Увеличивается глубина архива. Т.е. на флешку объемом 32Гб запишется больше информации (часов записи).
2. Снижается нагрузка на сеть. В случае с автовидеорегистраторами - неактуально.
3. Нагрузка на процессор - момент спорный. Я видел абсолютно противоположные результаты на однотипных видеокамерах, так что тут все на совести программистов.
Таким образом преимущество вырисовывается вроде бы только одно - увеличение длительности записи. Но вместе с этим сомнительным преимуществом вылезает куча минусов:
1. Исходя из структуры работы кодека (последняя картинка по ссылке), такой кодек вообще не годится для автовидеорегистраторов. Поясняю: Например, в системах охранного телевидения опорный кадр можно делать раз в 20 секунд без особых последствий для качества записи/глубины архива. Почему? Да потому что наблюдаемая сцена практически не меняется, камера зафиксирована неподвижно. Меняется только положение и количество людей в кадре.
А что же мы получаем в автовидеорегистраторе? В автовидеорегистраторе наблюдаемая сцена меняется полностью за две-три секунды. В результате объем изменений в кадре зашкаливает. Промежуточные кадры пытаются описать произошедшие изменения, но изменения настолько велики, что размер каждого промежуточного кадра сопоставим с опорным кадром. Это можно было бы обыграть более качественным сжатием, но не позволяет процессор видеорегистратора - он слишком слаб. В результате толку от такого кодирования - полный ноль. Я своей девушке купил видеорегистратор (естественно с потоковым сжатием, других-то нету), так вот одна минута записи при разрешении 640х480 и темпе
25 к/с занимает чуть больше 100 Мб записи. Поверьте - это огромный размер. Для сравнения возьмите фильм с похожим разрешением и посмотрите на его вес.
1,5 часа записи укладываются в 700-1000 мегабайт. Стоит сюда добавить что нигде в документации/настройках не указано, как часто делаются опорные кадры. Лично я не удивлюсь, если эти регистраторы пишут только опорными кадрами, сводя на "нет" все преимущества потокового кодека (впрочем, при записи такой динамической картинки преимуществ у потокового кодека нет)
2. Еще один очень весомый минус это надежность такого архива. При потоковом сжатии регистратор пишет
сессиями Что такое сессия? Сессия это грубо говоря открытый файл, который сейчас записывает регистратор. Размер файла вы можете указать в настройках видеорегистратора (2 мин, 5 мин, 15 мин и т.д.). При остановке записи регистратор должен закрыть сессию, чтобы видеозапись сохранилась. Если выключить питание во время записи, сессия не закрывается, записываемый файл теряется. Представляете - потерять последние полторы минуты записи в случае ДТП? Сколько метров можно на машине проехать за полторы минуты? Так что считайте что факта ДТП у вас может не сохраниться, случись что с питанием. Кстати, именно поэтому в подавляющем большинстве регистраторов стоит маленький аккумулятор. Он нужен для того, чтобы закрыть сессию в момент пропадания основного питания (выключения зажигания).
3. Еще один минус присущ скорей при работе с жесткими дисками, нежели с флешками. Если невозможно прочитать опорный кадр, то разваливается и вся следующая серия промежуточных кадров.
4. Опять-таки касается автовидеорегистраторов. Как я понял, китайскому регеру для закрытия сессии требуется определенное время. Эксперименты над регером показали, что при размере файла 2 мин регистратор закрывает его 3 секунды, при размере 5 минут - регистратор закрывает его 6-10 секунд, при размере файла 15 минут, регистратор закрывает его >15 секунд.
В то время, когда регистратор закрывает сессию - видеозапись отключается. Почему так происходит я до конца не разобрался, но данный недостаток присущ абсолютно всем недорогим видеорегистраторам. А это большой минус, ребята!
А теперь поговорим о покадровом сжатии. Небольшое сравнение можно почитать
тут:
Плюсы:
1. Размер архива при использовании в автомобильном видеорегистраторе будет либо меньше, либо сопоставим с межкадровыми кодеками.
2. Надежность гораздо выше. Кодек пишет не сессиями, а кадрами (хоть и складывает их в видеофайл). В результате, при пропадании питания может потеряться только последний (ну край три последних) кадра. При темпе записи 25 к/с, вы при аварийном выключении регистратора потеряете только
40-120 мс записи.
3. Разрушить такой архив сложней.
Минусы:
Из минусов можно отметить только высокую нагрузку на сеть (регистраторам опять-таки неактуально) и высокую нагрузку на ЦП регистратора. Переплатить за более мощный ЦП и покадровый кодек я лично готов.
Вот вроде и все. Правда получилось все несколько сумбурно и сбито.
Добавлено через 10 минут 0 секунд
дополню:
Одним из главных преимуществ потоковых кодеков является адаптация к пропускной способности канала (см. Ютуб) при передаче видео по сети.