Библиотека PHP для поиска видео по скриншоту

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

Проект Video Color

Описание

Перед всеми нами ежедневно встаёт задача поиска информации. Требуется найти текст, изображения, аудио или видео информацию. Чаще всего для поискового запроса используется текст. Реже - изображения. Есть сервисы вроде "Shazam", которые ищут музыку используя запись звука. Мы сосредоточились на создании поискового сервиса, который осуществляет поиск видео. В качестве параметров для запроса мы используем изображения.

Сайт

Сайт находится по адресу www.videocolor.aapsoftware.ru

Список статей

  • Технология видео поиска Video Color

  • Технология видео поиска «Video Color» (следующая статья)

  • Проблемы поиска кадров в базе данных, связанные с соотношением сторон и их решение

  • Использование индексных хэшей для ускорения поиска кадров в базе данных

  • Использование перцептивных хэшей для ускорения поиска кадров в базе данных «VideoColor»

  • Поисковая система «Video Color» для любителей фильмов

Список видео

  • 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/


Интересные статьи

Интересные статьи

Выросло новое поколение, которое возможно даже эту статью читать не будет, потому что слишком длинно и вообще потому что текст. Вот об этом и поговорим, почему коротко и по видео - это старый новый т...
Компания Иридиум — автор и разработчик инновационных систем управления iRidium — провела тестирование своей платформы iRidium pro с IP-домофонами Fanvil и предоставила обзор по итогам. Ис...
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накоп...
Всем привет! В данной статье хочется рассказать о том, как была решена задача записи видео автотестов, работающих в headless Chrome (с записью в не headless режиме проблем быть не...
Привет, Хабр! Хм, у меня такое чувство, будто мы уже встречались… Ах, да. Вот же тот пост, где мы лампово обсудили, приемлемо ли мониторить окружение, ограничивать пользователя в количестве уст...