Проект Video Color
Описание
Перед всеми нами ежедневно встаёт задача поиска информации. Требуется найти текст, изображения, аудио или видео информацию. Чаще всего для поискового запроса используется текст. Реже - изображения. Есть сервисы вроде "Shazam", которые ищут музыку используя запись звука. Мы сосредоточились на создании поискового сервиса, который осуществляет поиск видео. В качестве параметров для запроса мы используем изображения.
Сайт
Сайт находится по адресу www.videocolor.aapsoftware.ru
Список статей
Проблемы поиска кадров в базе данных, связанные с соотношением сторон и их решение
Использование индексных хэшей для ускорения поиска кадров в базе данных
Использование перцептивных хэшей для ускорения поиска кадров в базе данных «VideoColor»
Список видео
Video Color Creator 3.0 (приложение для добавления своих фильмов в базу данных "Video Color")
Поиск видео по изображению и поиск видео по короткому видео фрагменту
Библиотека для поиска
Для поиска видео по скриншоту для сторонних веб-сайтов на PHP была написана библиотека Video Color Search Client.
Есть два варианта получения данной библиотеки:
GitHub
Packagist.org
GitHub
Для клонирования проекта с GitHub откройте окошко терминала, перейдите в рабочий каталог и выполните следующую команду:
git clone https://github.com/alekseev23/VideoColorSearchClientPHP.git
Packagist.org
Для установки пакета с помощью Composer введите в консоли следующую команду:
php composer.phar require aap_software/video_color_search_client
После её выполнения в каталоге vendor появится подкаталог aap_software.
Использование библиотеки
Тестовый скрипт
Откройте окошко терминала
Перейдите в каталог проекта, туда где находится файл sample.php
Выполните следующую команду
php sample.php test.jpg
В результате работы скрипта появится текстовая информация о фильме. Попробуйте использовать другой скриншот. Где его взять? В Интернете полно кадров из фильмов.
Код примера
Давайте нашем тестовый скрипт example.php и разберём его работу.
<?php
declare(strict_types=1);
require("vendor/autoload.php");
$img = imagecreatefromjpeg("test.jpg");
$search = new AapSoftware\VideoColor\SearchClient();
$obj = $search->get($img);
imagedestroy($img);
if ($obj === null) {
echo "Server not connected!\n";
} elseif (!$obj->result) {
echo "Not found\n";
} else {
var_dump($obj);
}
Сохраняем, копируем в каталог изображение test.jpg и запускаем его:
php example.php
В результате выполнения увидим результат выполнения поискового запроса.
Подробный разбор кода
Включаем режим строгой типизации.
<?php
declare(strict_types=1);
Подключаем нашу библиотеку
require("vendor/autoload.php");
Создаём в памяти изображение из JPEG файла test.jpg
$img = imagecreatefromjpeg("test.jpg");
Создаём экземпляр класса SearchClient.
$search = new AapSoftware\VideoColor\SearchClient();
Выполняем поисковый запрос просто передав наше изображение.
$obj = $search->get($img);
Удаляем ставшее ненужным изображение.
imagedestroy($img);
Анализируем результат и если нет ошибок, то выводим полученную информацию.
if ($obj === null) {
echo "Server not connected!\n";
} elseif (!$obj->result) {
echo "Not found\n";
} else {
var_dump($obj);
}
Замечание 1
Если не использовать автозагрузку классов, то можно написать иначе.
require("src/SearchClient.php");
Замечание 2
Если нужно получить информацию о видео не на английском (работает по-умолчанию) а на русском языке, то поисковый запрос следует немного изменить и добавить второй параметр.
$obj = $search->get($img,"ru");
Комментарии (10)
pilot114
25.02.2022 08:58+2Друг интересуется - творчество порноактрисы по её фото сервис сможет найти?
aapsoftware Автор
25.02.2022 09:25Вопрос, конечно интересный, но ...
На сегодняшний день в базе данных более 30 000 проиндексированных фильмов (список есть на сайте), но порно там нет (ну может, какие то фильмы случайно затесались).
В принципе, нет ограничений по жанрам, и, если Вы хотите добавить сами целенаправленно какие то фильмы, то для этого есть специальное приложение. Нужно только потратить время на заполнение полей (название, жанр, актёры, год выпуска и т.п.) и само видео, после чего отправка индексных данных на сервер, а потом в БД. В начале этого поста есть ссылки на другие публикации, там этот процесс описан довольно подробно.
GennPen
25.02.2022 11:52Почему у меня по той же картинке что в статье ничего не находит?
Hidden text
aapsoftware Автор
25.02.2022 13:30Можно в личку информацию о браузере, а ещё лучше скриншот с консоли?
mrStrike
25.02.2022 12:27где код поисковика? Залить фото по url на сервер я и так могу, а вот серверный код, хм... ладей пахнет.
aapsoftware Автор
25.02.2022 13:39+1А код приложения обработки исходного видео? А код построителя базы данных, а код скрэпера?
А ключи от квартиры где деньги лежат?
Залить фото по url на сервер я и так могу,
Не-а, не можете. Сервер не принимает изображения. Обработка изображений на сайте и в приложениях ведётся на стороне клиента (для клиента это занимает секунду, а сервак разгружает). Сервер получает только результат обработки изображения (массив чисел).
Именно поэтому и нужна библиотека. Она этой обработкой и занимается.
NeoCode
Поиск медиаконтента - в целом весьма интересная тема, но слищком мало по этой теме информации
Существуют ли какие-то "общепринятые" решения в этой области? Например для обычного хеширования (применяемого в том числе в p2p сетях) применяют некий набор хешей со стандартными алгортмами. А для перцептивных хешей изображений, аудио и видео есть такие общепринятые решения?
Предоставляют ли крупные веб-сервисы (поисковики, соцсети) возможность поиска по готовому хешу?
aapsoftware Автор
В целом согласен, но есть очень интересные публикации. Вот, наткнулся недавно, хотя сами статьи опубликованы 5 лет назад.
Нет, не встречал. Думаю, отчасти это связано с тем, что компании, занимающиеся этим, не хотят так просто раскрывать свои секреты. А они есть! Тема весьма непростая, на мой взгляд.
Нет.