ООО "Сетевые информационные системы"
ПО видеонаблюдения LinuxDVR c поддержкой аналоговых CCTV видеокамер и сетевых IP видеокамер.

www.LinuxDVR.ru

Документ изменен: 21.10.2006,    распечатан: 29.03.2024

Выбор кодека для записи видео.

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

Какие условия нужно учитывать.
  1. Сравнение кoдeков JPEG, MJPEG, MPEG1, MPEG4.
  2. Количество видеокамер и общая скорость ввода в кадрах/сек.
  3. Размер кадра.
  4. Мощность процессора.
  5. Тип устройств ввода - сетевые вебкамеры или локальные.
  6. Интенсивность и продолжительность движения целей(людей, машин и т.п.) по конкретным в/к.
  7. Емкость и скорость работы жесткого диска.

Общую формулу вывести очень трудно, поэтому по каждому пункту списка выше приведем свои мнения и соображения, а решение оставим за Вами. Система гибкая, все параметры можно настроить конкретно по каждой в/к отдельно.

Про параметры и как их менять написано тут: настройка видеокамер.

1   Сравнение кoдeков JPEG, MJPEG, MPEG1, MPEG4.

Примечание: запись в файлы .mpg кoдeком MPEG1 и .avi кoдeком MPEG4 (DIVX, в следующих версиях XVID) у нас реализована в VBR режиме (varios bitrate), и поэтому качество сжатого изображения постоянное и может регулироваться от плохого к отличному.

Запись в файлы .avi кoдeком MJPEG - это тоже самое, что отдельные JPEG, только несколько файлов "в одном флаконе".

По скорости сжатия (читай загрузке CPU), разница между JPEG(MJPEG) и MPEG1(MPEG4) составляет примерно в 1,5 раза.

По удобству работы с архимом: конечно удобней работать с кадрами, упакованными в один файл, а не с большим списком jpeg-ов.

Приведем описание работы с архивом в 2-х случаях.

Примечание: для лучшего понимания текста посмотрите как выглядит интерфейс.

Веб-интерфейс модуля просмотра архива видеозаписей
 увеличить
(1100х700 ~100Kb)

1. Запись в отдельные файлы JPEG. Здесь все просто, сформировав запрос к базе данных и нажав на кнопку Вы получаете список ссылок на сохраненные JPEG-и порциями до 300 ссылок.

Хотя и есть автоматический режим Play(вперед/назад) в рамках одного списка кадров, все равно не очень удобно, преимущество только одно - для просмотра нужен только браузер.

2. Запись в файлы AVI или MPG. В этом случае после запроса к архиву, в правом фрейме вы получате 4 jpeg-a (первый кадр с движением и потом 3 кадра в следующие 3 секунды) а затем идут видеофильмы с полным сеансом движения (включая вышеперечисленные кадры). Размер файлов видеофильмов можно задавать от 1 до ... Mb.

Идея такая: сделав выборку по камерам и времени Вы сразу легко в браузере видите и анализируете первые кадры с движением. Если что-то интересное (а не уборщица прошла), то уже жмете на ссылку с видеофильмом, загружается медиаплейер и смотрите видео.
Для пользователей браузеров MS Internet Explorer есть режим проигрывания видео прямо на странице.

Почему мы не делаем "революций" и не используем супер форматы сжатия типа Wavelet, JPEG2000 и т.п., которыми бравируют многие российские (заметьте не зарубежные) разработчики.

Плюсы супер форматов:
  • При одинаковом качестве, получается меньший размер сжатого кадра (макс. в 1,3 раза).
    Прим: отличное качество можно обеспечить в любом формате.

Минусы супер форматов:
  1. Повышается загрузка CPU.
  2. Низкая переносимость и не совместимость с другим программным обеспечением, которое как правило уже есть на любом компьютере пользователя
  3. кoдeки для просмотра - платные.
  4. В случае с сетевыми MJPEG камерами и если при этом кoдeк для записи на диск - Wavelet или JPEG 2000, потребуется преобразование формата, то ОЧЕНЬ негативно сказывается на загрузку процессора.

Дополнительно скажем, что мы далеко не едины с таким подходом к стандартизации решений.

2   Количество видеокамер и общая скорость ввода в кадрах/сек.

Вы должны понимать что главный параметр в нашем случае это общая скорость видеоввода. Например (для локальных в/к подключенных к платам видезахвата): 4 камеры по 25 к/с обеспечат общую скорость 100 к/с, а 24 в/к по 3 к/с обеспечат только 72 к/с.

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

Естественно, чем больше общая скорость, тем больше кадров в каждую секунду подвергаются сжатию и записи на диск.

Повторимся еще раз, чтобы Вы запомнили, что считать нужно не по количеству в/к а по суммарной скорости видеоввода в кадрах в секундах.

3   Размер кадра.

По этому параметру почти линейная зависимость по загрузке процессора. Размер кадра для несжатого кадра YUV420P = W х H x 3/2.

Пример: 384x288x3/2 = 168 Kb, 640x480x3/2 = 461 Kb. (для тех кто читает через несколько строк - это не сжатое видео, а исходное с драйвера)

То есть, при прочих равных условиях, для кодирования кадра в 640x480 CPU потребуется времени более чем в 461/168 = 2,7 раза по сравнению с кадром 384х288. Соответственно во столько же возрастет загрузка CPU.

Так что выбирайте оптимальные для Вас значения размера кадра с желаемым качеством изображения и мощностью процессора.

4   Мощность процессора.

Только одна ремарка: если Вам нужно писать живое видео по нескольким каналам с размером 768x576 и непременно в MPEG4 и почему то все кадры подряд(без детектора движения), то сразу выбирайте последние процессоры PIV или Athlon 64.

Для тех кто сразу сказал "ФУ": возьмите какую-нибудь распространенную программу для записи видео (м.б. в комплекте с ПО ТВ-тюнера) и поэкспериментируйте записывая какой-нибудь канал.

Выбирайте кoдeк DIVX (как самый быстрый из семейства MPEG4), желаемое разрешение и смотрите на загрузку CPU.

В LinuxDVR загрузка будет меньше (за счет оптимизации кoдeков и дистрибутива в целом под конкретные возможности CPU), но возможно не на много.

Примечание: использование технологий MMX, SSE, SSE2, 3DNow предполагается как само собой разумеющееся.

5   Тип устройств ввода - сетевые вебкамеры или локальные.

С локальными аналоговыми видеокамерами, подключеными к платам видеозахвата все просто. Изображение изначально получается сырое в формате YUV420P - все равно нужно процессору поработать над сжатием.

Другое дело интернет камеры. Они уже сжатый поток MJPG выдают.

Для них идеальный формат сжатия для записи на диск - MJPEG(AVI).

В этом случае случае алгоритм работы такой:
  1. получили очередную порцию данных (jpg);
  2. распаковали для обработки детектором движения и возможного вывода на экран;
  3. записали исходный jpg на диск (отдельно или дописали в AVI).

В результате - нет операции самой ресурсоемкой преобразования формата и можно на один сервер завести в 2-3 раза больше вебкамер, по сравнению с режимом записи с преобразованием формата.

6   Интенсивность и продолжительность движения целей(людей, машин и т.п.) по конкретным в/к.

Это очень важный фактор.

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

7   Емкость и скорость работы жесткого диска.

Сначала про скорость.

Диски желательно выбирать с поддержкой режимов UDMA 100,133 SATA 150. с частота вращения шпинделя от 7200 rpm.

И естественно включать поддержку чипсетных драйверов (не в generic/стандартном/общем - IDE или SATA режимах). Иначе производительность заметно падает.

LinuxDVR - это специализированный дистрибутив, и в нем обеспечена поддержка всех основных чипсетов и автоматически включаются режимы, ускоряющие работу с диском.

А вот примерный расчет емкости диска.


Copyright (©) 2004-2010 ООО "Сетевые информационные системы", mailto: