Adobe premiere: Как детектировать сцены с неподвжиной камерой?
Здравствуйте
Мне нужно размечать в Adobe Premiere в видеоряде места, где камера неподвижна и места, где камера движется или наводится на резкость. Я бы хотел, чтобы это был график над видео-дорожкой, где указан процент разницы между соседними кадрами. При неподвжиной камере это будет примерно 60%, так как в кадре что-то происходит всеравно.
А при движении или фокусировке камеры - почти 100%.
Я пытался разобраться с adobe premiere sdk - но там, кажется, нет возможности создавать вспомогательные элементы с графиками. И нет возможности анализировать загруженные треки. Только фильтры, импорт, что-то еще.
Вариант нарезать видео в другом софте - не сильно удобен
Я разбираюсь в с/с++, но не могу понять с какой стороны подступиться к такой задаче.
В After Effects есть инструменты для трекинга. Есть возможность писать выражения (expressions) на JavaScript. Далее смотрим относительное смещение контрольной точки между кадрами и если ее координаты остаются примерно одинаковыми, то камера статична. Если нет - значит нет. Хотя всё это в любом случае не даст вам построить график непосредственно над видеодорожкой. Разве что это возможно в собственном плагине, но тут я совсем не уверен в предоставляемых разработчиками возможностях.
К слову, в Premiere тоже есть трекинг, но менее продвинутый.
Из остального в голову приходит только OpenCV. Возможно, с точки зрения программирования этот вариант будет лучше.
Я придумал решение, вполне ок:
Я написал утилиту, которая читает видео при помощи OpenCV, убирает из кадра точки, которые совпали с точками предыдущего кадра, остальные точки подсчитывает. Количество оставшихся точек - это и есть количество динамики в кадре. А чтобы это отобразить в AdobePremiere - утилита создаёт wav файл, где рисует график пропорционально количеству точек