LINUX.ORG.RU

Задача: найти движение в видео файле и собрать их в новом файле.

 


0

5

Заснял экшенкамерой птиц в кормушке. Видео на несколько часов, хочу получить птиц со звуком, без промежутков. То есть, найти фрагменты с движением и собрать их всех в одном выходном файле. Сразу сунулся в ffmpeg и его фильтры: ffmpeg -i C0064.MP4 -vf select='gt(scene\,0.005)' output.mp4 видео уменьшается с 4,7ГБ до 152,8МБ, из потока удаляется все без движения. Только видео по прежнему длится 13,5 минут. Просидел с мануалом и интернетом, но так и не нашёл нормальное решение. Получил вариант со скриптом, пачкой таймкодов, нарезкой десятков файлов, каждый с отдельным фрагментом а потом объединение этих файлов в общее видео. Ну колхоз-же.

Попробовал Motion с потоком из файла. Тут тоже куча костылей, сообщений о ошибках и т.п. Пока не дотаптывал.

Попробовал DVR-Scan. Ну вот это почти идеально. Прям как нужно делает. Даже по паре секунд до фрагмента и после добавляет и собирает сам в общий файл. Но, блин, со звуком он не работает!. Каюсь, код доработать не смог. Полез разбираться и понял, что всё основано на OpenCV а там вообще нет аудио. Максимум получил с помощью DVR-Scan перечень таймкодов для ffmpeg, но блин опять колхоз со скриптами и кучей файлов-фрагментов. А обработка видео в пару часов растягивается на сутки.

Ну и кучу разных скриптов перепробовал и все, в основном, рассчитаны на сохранение таймкода а движение или в вывод события или банальное уменьшение объёма.

Всё видео давно обрабатываю в Kdenlive но, кажись, не он не библиотека MLT, на которой он основан, тоже детекцию движения не поддерживают.

Неужели ffmpeg такое не умеет по простому и нужно писать здоровенный скрипт?


Попробовал DVR-Scan. Ну вот это почти идеально. Но, блин, со звуком он не работает!

Гапиши issue в гитхабе, тыж программист и должен уметь в английский :))

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Боюсь DVR-Scan это тупик. Там, кажись, звук вообще никак не приделать. Мне всё-таки кажется, ffmpeg должен тут помочь. ffmpeg -i C0064.MP4 -vf select='gt(scene\,0.005),setpts=N/(5*TB)' output.mp4 Меняет кол-во кадров на 5 в отрезках с движением. Значит мы получаем отрезок и можем что-то с ним выполнить. Осталось догадаться, как каждый такой отрезок добавлять в выходной файл а промежутки забывать.

DeOnis
() автор топика
Ответ на: комментарий от DeOnis

Боюсь DVR-Scan это тупик. Там, кажись, звук вообще никак не приделать. Мне всё-таки кажется, ffmpeg должен тут помочь.

Звук режется синхронно с видео, это значит просто надо добавить соответствующие опции для вызываемой DVR-Scan утилиты для монтажа видео, скорее всего того же ffmpeg.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Поковырял я код DVRа, написан он на python. Увижу в обработке видео работу с объектами библиотеки OpenCV. В этой библиотеке звук в принципе отбрасывается, кажись. Никак звук не приделать.

DeOnis
() автор топика
Ответ на: комментарий от DeOnis

Увижу в обработке видео работу с объектами библиотеки OpenCV.

Хорошо, а режет он видео чем, с помощью OpenCV?

Если это так, то просто забрать таймкоды из opencv реально?

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Реально. В два раза дольше корячиться, чем длится видео, но тайм коды выдаёт. Тайм коды я кладу в массив, вы делаю россыпь мелких фйлов с фрагментами движения и потом собираю одно видео. И это работает. Но работает неадекватно долго. Неужели нельзя дополнить строчку ffmpeg, ведь он 90% работы уже сделал и сделал это очень быстро, как минимум 2,5х.

DeOnis
() автор топика
Ответ на: комментарий от DeOnis

Неужели нельзя дополнить строчку ffmpeg

Думаю что можно, но ты написал что обработка идёт внутри OpenCV которая работать со звуком не умеет.

Но я думаю что ты прав и где-то внутри OpenCV должен находится вызов ffmpeg.

torvn77 ★★★★★
()

А если так? -vf mpdecimate
Оно удаляет все повторяющиеся кадры. Чтобы продолжительность была нужной, можно указать fps в mkvtoolnix.

anonymous
()
Ответ на: комментарий от anonymous

фотоловушку. или купить компоненты и наколхозить самому...

//гораздо проще сразу снимать, то что нужно, чем потом пытаться через анус гланды вырвать.

///так «птичек» и снимают собственно.

Adsky_Burunduk
()
Ответ на: комментарий от anonymous

Попробовал. Не похоже, что -vf mpdecimate вообще как-то повлияло, длительность по прежнему большая. Думаю нужно как-то разрешить ffmpeg нещадно рубить звуковую дорожку. fps mkvtoolnix ещё не пробовал, но это похоже на очередной костыль. Очень хотелось всё решить одним ffmpeg.

DeOnis
() автор топика
Ответ на: комментарий от anonymous

Попробовал ffmpeg -i C0064.MP4 -vf mpdecimate,setpts=N/FRAME_RATE/TB output_mpdecimate.mp4 из поста по ссылке. Длительность видео осталась прежняя, зато разбежались видео и звук.

DeOnis
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.