Инструмент для быстрого поиска сцен в видео файлах

Предыстория


Когда то я поспорил с моим приятелем по поводу одного фильма. Он утверждал, что главный герой говорит одно, я же считал, что он говорит совершенно обратное. В результате мы поспорили на N-ое количество алкогольно-прохладительных напитков и направились к общему другу, который являлся счастливым обладателем VHS-видеоплеера и у которого должен был быть этот самый фильм. Спор этот я проиграл, но, хорошо помню, что мы потратили много времени на поиск именно этой сцены.Годы спустя, уже в наши дни, другой мой приятель переписал мне видео с регистратора на флэшку со словами, что там мол, после какого то поворота налево в объектив устройства должен был попасть наш общий знакомый (неприятный тип), который находился в чуднОм состоянии и, предлагал мне, приколоться по этому поводу.Искать чью-то физиономию на видео длиной в пару часов, это, конечно, не то чтобы искать иголку в стогу сена, но, тоже, удовольствие на любителя. Похоже, что именно тогда в моей голове начала зреть идея и я задался вопросом: как просмотреть несколько часов видеозаписей, чтобы найти там что тебе надо и при этом не сильно ограничить себя во сне?

Основная идея


В результате размышлений я пришёл к выводу, что проще всего для поиска использовать табличное представление видео: в каждой ячейке свой временной интервал.
image

Табличное представление видео: что это за зверь и с чем его едят?


Примеры видео в табличном формате

Candies
Parking
Road

Примеры изображений в табличном формате

Candies
Parking
Road

Собственно, сам инструмент


После некоторых мучений мной была написана программа Table View Video Player. image

Основные возможности программы


  • Воспроизведение видео в табличном виде
  • Возможность сохранять видео в табличном виде (для просмотра на планшете или просто на другом компьютере)
  • Настраиваемое количество строк и столбцов в таблице, а также размеры результирующего кадра в пикселях
  • Список файлов (для быстрого переключения между видео, а также если событие состоит из нескольких файлов, например VOB-файлы на DVD или записи с видео регистратора)
  • Сохранение индексного изображения
  • Пакетное создание видео и индексных изображений для всех файлов в списке
  • Некоторые преобразования исходного видео при воспроизведении (вращение на 90, 180, 270 градусов, отражение по вертикали и по горизонтали)
  • Возможность выбора конкретной области исходного видео
  • Возможность воспроизведения исходного видео в обычном режиме с заданной позиции во встроенном проигрывателе или в другой программе


А что там под капотом?


Программа написана на C++, использовался MS Visual Studio 2015. В качестве видео библиотек можно было ограничиться FFMPEG, но я юзал OpenCV (планирую использовать другие возможности этой библиотеки).

Область применения данного инструмента


Попробую показать всё на примере. Я поставил видео камеру на кухне, а конфеты спрятал на кухонный навесной шкаф. Продолжительность видео 2 часа. А теперь посмотрите на картинку и скажите кто их съел: папа, мама или кто-то из детей? Даже если бы не было выделения нужных областей, всем всё стало бы ясно через 2 минуты просмотра, а может и раньше.image Если кто-то хочет провести эксперимент, то вот ссылка на исходное видео, а вот ссылка на видео в табличном виде. Итак, основное предназначение программы — узнать кто стырил конфеты визуальный анализ видео.

Ещё немного практики


По праздникам я снимаю видео в детском саду, а также семейные юбилеи, свадьбы друзей и родственников. Pinnacle Studio — отличная программа для видеомонтажа! Говорят даже, что в ней с лёгкостью разбираются домохозяйки! Не понимаю правда, откуда у домохозяек столько упорства и свободного времени, чтобы тратить часы на многократные попытки проэкспортировать смонтированное видео в файл или на DVD-диск? Сам я пользуюсь этой программой начиная с 8-ой версии (сейчас использую лицензионную 17, а последняя выпущенная это 19 версия), но, несмотря на мой опыт, редко получается, чтобы в процессе редактирования или экспорта приложение не повисло. Но даже если экспорт завершился удачно (по мнению Pinnacle Studio), то при просмотре видео в VLC-плеере или проигрывателе Windows-Media иногда встречаются артефакты, вид которых смущает пользователей моей продукции.Что ж! Table View Video Player можно использовать и здесь! Запускаем программу, открываем наш файл и не концентрируясь на каком-либо фрагменте конкретно просто пытаемся почувствовать, где вдруг появляется фриз или какая то бяка.Типа этого.imageПять минут на поиск артефактов видео — это не так уж и много! В таком случае заново открываем проект и пытаемся исправить проблему. И немного радуемся тому, что обнаружили это сами, а не »счастливые родители» во время семейного просмотра.

Шаг назад


Некоторое время назад я похвастался своей программой перед знакомым, на что получил замечание, что программа слишком сложна и лично он бы в ней никогда не разобрался. Мдя, а я то думал… Учтя конструктивную критику, я осознал, что, возможно, он прав. Так возникла необходимость создания более простой (Lite) версии.image

Основные возможности программы


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

По сравнению со стандартной версией убраны многие фичи, но зато программа стала простая как 2 копейки!

Теория поиска сцен и объектов


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

Сильные стороны


  • Поиск некоторых событий в относительно статичной картинке. Например, запись посетителей в холле. Если их не так много, то найти нужного человека довольно легко. Здесь поиск можно ускорить в десятки раз!
  • Поиск сцен, имеющих контрастную цветовую гамму или освещенность в динамичном видео. Например, есть фильм, снятый преимущественно в помещении, но имеется одна или несколько сцен снятых на улице в ясный солнечный день. Требуется их найти. В этом случае они очень быстро и очно находятся.


Слабые стороны


  • Поиск конкретных людей в толпе. Например, в метро в час пик. Здесь табличное представление не поможет, лучше просматривать видео в обычном режиме (меньше вероятность пропустить искомое) или использовать специально заточенные автоматические средства.

Конкуренты или программы для поиска сцен и объектов


Прямых конкурентов я назвать не могу, но есть несколько программ, которые делают нечто похожее.

Список далеко не полон, часть ссылок никак не могу найти. Но был бы благодарен, за дополнение…

Планы на будущее


  • Ускорение воспроизведения видео. Уже сейчас видео в разрешении VGA на современном компьютере можно смотреть в таблице 10×10 с частотой 20–30 FPS. Однако видео c современных фото и видео камер, экшен-камер и видео регистраторов имеет разрешение Full HD или даже выше и не за горами 4K. Поэтому без использования GPU не обойтись.
  • Возможность сохранения найденной информации в виде изображений (стоп-кадр), аудио или видео фрагментов интересующих моментов для последующего использования. Например, для монтажа видеофильма (собираем смешные сюжеты с вечеринки) или для представления доказательств в суде (если камера видео наблюдения засняла момент кражи).

Выводы


  • Инструментов для поиска сцен и объектов в видео на сегодняшний день для рядового пользователя практически не существует.
  • Приложения Table View Video Player и Table View Video Player Lite пытаются хоть как восполнить эту нишу.
  • Для определённых видов поиска сцен в видео метод табличного представления является очень эффективным.
  • Несмотря на то, что для одновременного воспроизведения нескольких десятков видео потоков требуется высокая производительность компьютера, при невысоком разрешении (SD качество) исходного видео задача успешно решается современными ПК.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Habrahabr.ru