Как объединить 2 перекрывающихся видео в одно видео, используя ffmpeg или opencv? - PullRequest
1 голос
/ 04 июня 2019

Слияние двух видео легко, ответили пару раз. У меня есть несколько перекрывающихся видео. Видео может перекрываться с видео до него. Это означает, что если видео 1 охватывает временную шкалу 1-5, то видео 2 может перекрывать 1 и охватывать 3-8. Объединение их в том виде, в каком оно есть, приведет к 1-5 | 3-8, когда мне понадобится только 1-8.

Видео отсортированы по алфавиту.

Моя общая идея решения ...

  • захватить последний кадр видео
  • если это первое видео, продолжайте
  • если это не первое видео, т.е. 2-й, поиск кадра, сохраненного в предыдущих шагах, кадр за кадром
  • если он достигает последнего кадра текущего видео, то перекрытие не продолжается.
  • если он находит кадр, затем обрезать 2-е видео до этого кадра включительно и затем перейти к следующему кадру
  • как только все видео проанализированы, объедините их в одно видео.

Мне нужно перевести это в команды ffmpeg. Или opencv, если это лучший инструмент.

Если есть лучший способ сделать это, мне это тоже интересно.

1 Ответ

1 голос
/ 05 июня 2019

для ffmepg вы можете использовать скрипт ниже.это проверило это.Но по времени, вы должны изменить это STARTPTS от + 5 до +25 в вашем видео.Я поставил 5 здесь, чтобы проверить, происходит ли слияние.

ffmpeg -i 2.mp4 -i 1.mp4 -filter_complex "[1]setpts=PTS-STARTPTS+5/TB[top];[0:0][top]overlay=enable='between(t\,10,15)'[out]" -shortest -map [out] -map 0:1        -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 output1.mp4

Ограничение Этот источник должен быть достаточно длинным, что означает, что вам нужно видео-холст, а затем используйте этот скрипт для добавления каждого видео на холст.

И в ffmpeg нет полностью автономного способа его использования.

Вы правы.Opencv не может разобраться со звуком.для одновременной работы нужна поддержка сторонней библиотеки.До этого мне приходилось использовать ROS для передачи звука и изображения в систему робота с веб-камеры.Затем звук обрабатывается с использованием НЛП для пользовательского интерфейса на естественном языке, а зрение используется отдельно для определения местоположения и картирования.

Существует несколько способов обхода.

Сначала вы используете сопоставление с шаблоном OpenCV или различие изображения в пакете локального окна.Наименьшая позиция ошибки даст вам правильное местоположение A для вставки.Это должно быть точным с точки зрения мили-второго уровня.(если ошибка всегда велика, это означает, что исключений перекрытия и возврата нет)

Во-вторых, на основе правильного местоположения, полученного из opencv.вызовите system.call для вызова вышеуказанного скрипта с параметром A в качестве входных данных для автоматического слияния.

Зависит от вашего приложения. Если вам нужно делать это часто, напишите сценарий opencv python для автоматического предохранителя.Если хотя бы раз в месяц делать это вручную, достаточно использовать ffmepg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...