Предыстория
Когда то я поспорил с моим приятелем по поводу одного фильма. Он утверждал, что главный герой говорит одно, я же считал, что он говорит совершенно обратное. В результате мы поспорили на N-ое количество алкогольно-прохладительных напитков и направились к общему другу, который являлся счастливым обладателем VHS-видеоплеера и у которого должен был быть этот самый фильм. Спор этот я проиграл, но, хорошо помню, что мы потратили много времени на поиск именно этой сцены.Годы спустя, уже в наши дни, другой мой приятель переписал мне видео с регистратора на флэшку со словами, что там мол, после какого то поворота налево в объектив устройства должен был попасть наш общий знакомый (неприятный тип), который находился в чуднОм состоянии и, предлагал мне, приколоться по этому поводу.Искать чью-то физиономию на видео длиной в пару часов, это, конечно, не то чтобы искать иголку в стогу сена, но, тоже, удовольствие на любителя. Похоже, что именно тогда в моей голове начала зреть идея и я задался вопросом: как просмотреть несколько часов видеозаписей, чтобы найти там что тебе надо и при этом не сильно ограничить себя во сне?
Основная идея
В результате размышлений я пришёл к выводу, что проще всего для поиска использовать табличное представление видео: в каждой ячейке свой временной интервал.
Табличное представление видео: что это за зверь и с чем его едят?
Примеры видео в табличном формате
Примеры изображений в табличном формате
Собственно, сам инструмент
После некоторых мучений мной была написана программа Table View Video Player.
Основные возможности программы
- Воспроизведение видео в табличном виде
- Возможность сохранять видео в табличном виде (для просмотра на планшете или просто на другом компьютере)
- Настраиваемое количество строк и столбцов в таблице, а также размеры результирующего кадра в пикселях
- Список файлов (для быстрого переключения между видео, а также если событие состоит из нескольких файлов, например VOB-файлы на DVD или записи с видео регистратора)
- Сохранение индексного изображения
- Пакетное создание видео и индексных изображений для всех файлов в списке
- Некоторые преобразования исходного видео при воспроизведении (вращение на 90, 180, 270 градусов, отражение по вертикали и по горизонтали)
- Возможность выбора конкретной области исходного видео
- Возможность воспроизведения исходного видео в обычном режиме с заданной позиции во встроенном проигрывателе или в другой программе
А что там под капотом?
Программа написана на C++, использовался MS Visual Studio 2015. В качестве видео библиотек можно было ограничиться FFMPEG, но я юзал OpenCV (планирую использовать другие возможности этой библиотеки).
Область применения данного инструмента
Попробую показать всё на примере. Я поставил видео камеру на кухне, а конфеты спрятал на кухонный навесной шкаф. Продолжительность видео 2 часа. А теперь посмотрите на картинку и скажите кто их съел: папа, мама или кто-то из детей? Даже если бы не было выделения нужных областей, всем всё стало бы ясно через 2 минуты просмотра, а может и раньше. Если кто-то хочет провести эксперимент, то вот ссылка на исходное видео, а вот ссылка на видео в табличном виде. Итак, основное предназначение программы — узнать кто стырил конфеты визуальный анализ видео.
Ещё немного практики
По праздникам я снимаю видео в детском саду, а также семейные юбилеи, свадьбы друзей и родственников. Pinnacle Studio — отличная программа для видеомонтажа! Говорят даже, что в ней с лёгкостью разбираются домохозяйки! Не понимаю правда, откуда у домохозяек столько упорства и свободного времени, чтобы тратить часы на многократные попытки проэкспортировать смонтированное видео в файл или на DVD-диск? Сам я пользуюсь этой программой начиная с 8-ой версии (сейчас использую лицензионную 17, а последняя выпущенная это 19 версия), но, несмотря на мой опыт, редко получается, чтобы в процессе редактирования или экспорта приложение не повисло. Но даже если экспорт завершился удачно (по мнению Pinnacle Studio), то при просмотре видео в VLC-плеере или проигрывателе Windows-Media иногда встречаются артефакты, вид которых смущает пользователей моей продукции.Что ж! Table View Video Player можно использовать и здесь! Запускаем программу, открываем наш файл и не концентрируясь на каком-либо фрагменте конкретно просто пытаемся почувствовать, где вдруг появляется фриз или какая то бяка.Типа этого.Пять минут на поиск артефактов видео — это не так уж и много!В таком случае заново открываем проект и пытаемся исправить проблему. И немного радуемся тому, что обнаружили это сами, а не «счастливые родители» во время семейного просмотра.
Шаг назад
Некоторое время назад я похвастался своей программой перед знакомым, на что получил замечание, что программа слишком сложна и лично он бы в ней никогда не разобрался. Мдя, а я то думал… Учтя конструктивную критику, я осознал, что, возможно, он прав. Так возникла необходимость создания более простой (Lite) версии.
Основные возможности программы
- Воспроизведение видео в табличном виде
- Изменяемые размеры таблицы
- Список файлов (для быстрого переключения между видео, а также если событие состоит из нескольких файлов, например VOB-файлы на DVD или записи с видео регистратора)
- Возможность воспроизведения исходного видео в обычном режиме с заданной позиции во встроенном проигрывателе.
По сравнению со стандартной версией убраны многие фичи, но зато программа стала простая как 2 копейки!
Теория поиска сцен и объектов
Существующие автоматические решения для поиска по видео архиву ресурсоёмки, кроме того не всегда можно чётко сформулировать что же Вы ищете. В этом случае использование ручного поиска (я имею в виду с помощью оператора), если ускорить его с помощью табличного воспроизведения, может оказаться весьма эффективным.
Сильные стороны
- Поиск некоторых событий в относительно статичной картинке. Например, запись посетителей в холле. Если их не так много, то найти нужного человека довольно легко. Здесь поиск можно ускорить в десятки раз!
- Поиск сцен, имеющих контрастную цветовую гамму или освещенность в динамичном видео. Например, есть фильм, снятый преимущественно в помещении, но имеется одна или несколько сцен снятых на улице в ясный солнечный день. Требуется их найти. В этом случае они очень быстро и очно находятся.
Слабые стороны
- Поиск конкретных людей в толпе. Например, в метро в час пик. Здесь табличное представление не поможет, лучше просматривать видео в обычном режиме (меньше вероятность пропустить искомое) или использовать специально заточенные автоматические средства.
Конкуренты или программы для поиска сцен и объектов
Прямых конкурентов я назвать не могу, но есть несколько программ, которые делают нечто похожее.
Список далеко не полон, часть ссылок никак не могу найти. Но был бы благодарен, за дополнение…
Планы на будущее
- Ускорение воспроизведения видео. Уже сейчас видео в разрешении VGA на современном компьютере можно смотреть в таблице 10x10 с частотой 20-30 FPS. Однако видео c современных фото и видео камер, экшен-камер и видео регистраторов имеет разрешение Full HD или даже выше и не за горами 4K. Поэтому без использования GPU не обойтись.
- Возможность сохранения найденной информации в виде изображений (стоп-кадр), аудио или видео фрагментов интересующих моментов для последующего использования. Например, для монтажа видеофильма (собираем смешные сюжеты с вечеринки) или для представления доказательств в суде (если камера видео наблюдения засняла момент кражи).
Выводы
- Инструментов для поиска сцен и объектов в видео на сегодняшний день для рядового пользователя практически не существует.
- Приложения Table View Video Player и Table View Video Player Lite пытаются хоть как восполнить эту нишу.
- Для определённых видов поиска сцен в видео метод табличного представления является очень эффективным.
- Несмотря на то, что для одновременного воспроизведения нескольких десятков видео потоков требуется высокая производительность компьютера, при невысоком разрешении (SD качество) исходного видео задача успешно решается современными ПК.
Автор: alekseev_ap