У клиента есть коллекция обучающих видео, каждая из которых имеет следующую структуру:
- предварительный просмотр (или резюме)
- вступление (всегда идентично)
- повторяющаяся часть из предыдущего видео (необязательно)
- новый контент
- аутро
Мне поручено объединить эти видео, создав одно видео для каждых 10 видео, содержащее только ОДНО вступление, одно OUTRO и контент из всех 10 видео.
Проблема в переменных повторяющихся частях из предыдущего видео, которые я не хочу дублировать. Моей первой идеей было извлечь все кадры (или только ключевые кадры) с помощью ffmpeg и смешать их с помощью framemd5. Затем сравните полученный поток md5, чтобы решить, где останавливается повторяющийся контент.
Этот подход кажется слишком неумолимым, поскольку я не могу предположить, что один и тот же кадр кодируется абсолютно одинаково в обоих видео. Следующая идея состоит в том, чтобы сгенерировать гистограмму для каждого кадра, а затем сопоставить функцию гистограммы между видео с определенной степенью допуска (5%?).
Другая идея состояла в том, чтобы использовать OpenCV и выполнить matchTemplate для поиска похожих картинок, но это должно было бы выполняться на каждом кадре, и я думаю, что это очень быстро столкнется с проблемами производительности.
Есть ли проверенные и верные решения этой проблемы? Или, может быть, экспериментальные решения? Можно ли с помощью ffmpeg сгенерировать рамочную гистограмму так же, как работает framemd5?
Есть идеи, какую технику использует Youtube для соответствия защищенному авторским правом содержимому в загруженных видео?