Есть видео и надо понять повторяется оно или нет. Найти в общем дубль. Погуглил тему нашёл такое решение. Беру стоп кадр например на 5 секунде любого видео сохраняю как картинку затем в md5 сверяю хеш по базе уже имеющихся. Проблема в том что по какой то причине хеш всегда получается разный беру одно и тоже видео но хеши разные. Вопрос как быть как сравнивать видео?
Хэш будет меняться при каждой рекомпрессии. Это вообще не вариант. Это всё равно, что брать хэш от всего файла целиком функцией md5_file(). Я бы делал что-то типа уменьшения размера кадра до 64x36 потом применял фильтр типа монохром, и от этого уже брал бы хэш. Почему так? В высоком разрешении кадр состоит из сотен тысяч или миллионов пикселей. В разных файлах одного и того же видео могут отличаться тысячи пикселей, незначительно, +-пара шагов яркости или оттенка. Но при уменьшении и сведении паллитры до жесткого чб, различия нивелируются. Для надёжности можно брать 100 кадров, и если хоть один хэш совпал, значит видео одно и то же.
Сравнивая два скриншота вы делаете вывод о совпадении одного кадра, а не видео в целом. ИМХО, чтобы вывод о совпадении был похож на то как его сделал бы человек, надо анализировать видео целиком. То есть да, взять весь видеоряд, как-то его упростить и потом вычислить коэффициент подобия. Что-то вроде системы поиска плагиата в тексте. --- Добавлено --- Человек делает вывод что это тот же самый фильм даже если файлы в разном разрешении, пожаты разным алгоритмом. И его не сбивает с толку если один из видосов содердит рекламу в начале и от этого весь тайминг сцен сдвинулся ))) Поэтому одного скриншота в одно и то же время недостаточно.