Проект 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");
ссылка на оригинал статьи https://habr.com/ru/post/653371/
Добавить комментарий