Как сделать Stop Motion или покадровой видео с веб-камерой?

28

У меня есть веб-камера, которая работает как устройство v4l2.

Каков наиболее удобный способ съемки видео в режиме стоп-кадра или покадровой съемки?

NB

остановка и замедленная съемка взаимосвязаны, но концептуально различны.

Промежуток времени - это когда вы фотографируете сцену с заданным интервалом, а затем объединяете ее в видео (похоже, что оно идет очень быстро).

Остановка движения - это то, где вы управляете сценой и делаете снимок для каждого изменения, которое вы делаете, чтобы сформировать анимацию (например, Уоллес и Громмит).

Приложение для покадровой съемки должно иметь возможность делать фотографии с заданным интервалом.

Сеппо Эрвиаля
источник
Подобный вопрос в фотографиях имеет интересные ответы, которые частично совпадают.
anarcat

Ответы:

40

Захватывает миллионы изображений.

Первый шаг - захват изображений. Представим, что вы хотите делать снимок каждые 10 секунд и сохранять его в каталоге на рабочем столе.

mkdir ~/Desktop/cap
cd ~/Desktop/cap

Мы используем streamerдля захвата, поэтому давайте установим его:

sudo apt-get install streamer

И теперь мы хотим захватить

streamer -o 0000.jpeg -s 300x200 -j 100 -t 2000 -r 1

-tэто количество кадров, которые мы хотим захватить. -rэто количество кадров в секунду. Так что это должно захватывать один кадр каждую секунду. Если вы сожмете это в видео 30 кадров в секунду, одна минута захвата станет 2 секундами видео. Вы захотите настроить это соответствующим образом в зависимости от того, сколько выходного видео вы хотите.

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

Собираем все вместе

Я собираюсь использовать ffmpeg. Есть много разных способов соединить это вместе, mencoderно я просто предпочитаю ffmpegвзгляды на жизнь. После установки it ( sudo apt-get install ffmpeg) просто убери это:

ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4

Настройки качества не похожи на настройки моей веб-камеры, так что вы можете поэкспериментировать с опциями, чтобы получить лучшее кодирование, но это должно дать вам хорошее видео со скоростью 30 кадров в секунду, сжатое в x264.

Возможно, вы захотите поиграть с частотой кадров ( -r), но я бы не стал опускаться ниже 15 кадров в секунду.

Оли
источник
1
Каждые десять секунд потребуется -r 0.1.
Сеппо Эрвиаля
man streamerне описывает то, что делает каждый параметр. Где я могу получить информацию о jпараметре? Как я могу сделать это, пока я не нажму CTRL + C, с заданным FPS?
Томаш Зато - Восстановить Монику
@oli ffmpegбольше не работает для меня. Что я должен использовать?
Тим
1
@ChrisH Это технически хорошо, я имею в виду, что это базовое ограничение для плавного видео. Это в значительной степени зависит от того, насколько быстро вы их принимаете.
Оли
2
@ TomášZato streamer -hгораздо более всеобъемлющий. Я ненавижу, когда разработчики прилагают много усилий, --helpно ничего для справочной страницы.
WasabiFlux
9

Для захвата каждые X секунд с веб-камеры используйте движение.

устанавливать motion

sudo apt-get install motion или sudo aptitude install motion

Настройте движение для каждого количества секунд X

sudo nano /etc/motion/motion.conf

Изменение переменных minimum_frame_time и snapshot_interval на такое же количество секунд вы хотите , чтобы сделать снимок с помощью веб - камеры.

10 минут = 600 секунд
20 минут = 1200 секунд
30 минут = 1800 секунд
1 час = 3600 секунд
2 часа = 7200 секунд и так далее ...

запустить движение с sudo motionостановкой с помощью CTRL+C

ПРИМЕЧАНИЕ. - Настройте файл motion.conf для сохранения файлов в другом каталоге, чем каталог по умолчанию / tmp. Например, ваша домашняя папка. Поскольку переход к / tmp требует больше привилегий. Вы также найдете много полезных опций в файле motion.conf для многих других вещей, которые могут вам понравиться.

Луис Альварадо
источник
Это намного лучше, чем стример. Не уверен, что мне нравится решение с обязательным доступом к корневому каталогу, и мне кажется, что я теряю возможность использовать его как зеркало заднего вида, но это намного лучше, чем стример, и может решить другую проблему, которую я хотел посмотреть в, который только фотографирует, если я там. Отметит это как решенное, если я смогу решить другие проблемы.
Дейв Джейкоби
На самом деле вам не нужен root-доступ для его использования. Вам нужен только root-доступ для редактирования файла конфигурации.
Луис Альварадо
Полагаю, если вы хотите записать путь по умолчанию, это тоже может быть необходимо, но это первое, что я изменил. Спасибо.
Дэйв Джейкоби,
Нет проблем, приятель. Рад помочь.
Луис Альварадо
Я попробовал это. Это работало хорошо. Я мог бы попробовать это снова в какой-то момент. Но это не дало мне вид сзади, который я ценю больше, чем автоматическая съемка. Итак, я запускаю Cheese прямо сейчас.
Дэйв Джейкоби,
7

gTimelapse ( ссылка для скачивания )

введите описание изображения здесь

Приложение для захвата изображений для создания видео с интервальной съемкой, созданное на основе библиотек gPhoto2 и wxWidgets.

Составить инструкцию

Загрузите источник с сайта sourceforge

в терминале наберите следующее:

cd Downloads 
gunzip gtimelapse-0.1.tar.gz
tar -xvf gtimelapse-0.1.tar
cd gtimelapse
sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev gphoto2
./configure
make
sudo make install

Для запуска типа приложения

gtimelapse &

примечание 1

gphoto2 --list-cameras | more

примечание 2

см этот блог для получения дополнительной полезной информации

перечисляет все совместимые устройства, которые поддерживает приложение

примечание 3

Я читал, что gphoto2 не поддерживает веб-камеры - в любом случае я оставлю этот ответ видимым на тот случай, если кто-нибудь захочет попробовать этот ответ приличной цифровой камерой вместо веб-камеры.

fossfreedom
источник
Потребовалось некоторое время, чтобы получить и скомпилировать wxWidgets со всеми необходимыми условиями. Я также скомпилировал gTimelapse, но он просто вылетает с: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): не удалось подтвердить "item" в Check (): wxMenu :: Check: такого элемента нет [Отладка] Генерация трассировки стека ... пожалуйста, waitTrace / trap-прерывание
Seppo Erviälä
Хорошо, сегодня я пойду, чтобы собрать себя. Я добавлю несколько инструкций к моему ответу (при условии, что я сам смогу это сделать).
fossfreedom
На самом деле это очень полезно, так как у меня есть цифровая камера, поддерживаемая gphoto2. Я не знал, что такая библиотека существует.
Сеппо Эрвиаля
1

Я использовал Stopmotion, чтобы сделать это, это в центре программного обеспечения. Вы также можете снимать с сыром, но вы должны изменить конфигурацию сыра, чтобы увеличить максимальное количество изображений. Я обнаружил, что проще всего использовать Stopmotion для всего процесса.

Том Броссман
источник
1

Лучший и простой способ сделать это - установить Motion . Это полнофункциональное программное обеспечение для наблюдения за операционными системами на базе Linux.

Установить через центр программного обеспечения

Веса
источник
1

Быстрый, грязный, но несколько более гибкий вариант выглядит следующим образом:

ffmpeg -pattern_type glob -framerate 25 -i 'image-*.jpg' -c:v libx264 \
    -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

Здесь я добавляю -pattern_type glob, используя подстановочные знаки *, и помещая мое имя файла в одинарных цитатах: 'image-*.jpg'.

Преимущество: этот синтаксис позволяет вам начинать с любого номера и иметь любой шаблон в вашей нумерации (я часто создаю счет на 20, начиная, например, с 20000).

Недостатки: этот синтаксис не позволяет пропускать повторяющиеся цифры, как позволяет синтаксис «% ## d». Кроме того, у вас не может быть схемы нумерации без предшествующих 0. То есть схема именования файлов должна быть чем-то вроде 00001, 00002, ... 00033 ... (Нумерация не может быть 1,2,3, ... 33, ..., иначе число «3» будет сортироваться между «39» и «40», например).

Отдельно обратите также внимание на то, что мне пришлось вводить имя входного файла в одинарные кавычки, в противном случае ffmpeg попытался перезаписать все мои файлы изображений копией первого изображения (всегда рекомендуется скопировать резервную копию перед манипулированием файлами). ).

Из этого редактирования от анонимного пользователя.

Тим
источник
0

Вы должны иметь возможность настроить движение (в файле motion.conf) для потоковой передачи - по умолчанию он транслируется на порт 8081. Все, что вам нужно сделать, чтобы получить зеркало «заднего вида», это открыть VLC, «Открыть сетевой поток» и укажите на http: // localhost: 8081 .

Дерек
источник
0

Camorama - это средство просмотра / записи веб-камеры, которое я использовал для съемки фотографий с интервалом в 1 минуту и ​​загрузки их на веб-сервер с моей веб-камеры; это простая установка. Также он доступен в Центре программного обеспечения Ubuntu или вы можете установить его, используя:

sudo apt-get install camorama

Надеюсь это поможет.

kicsyromy
источник
Извините, только что увидел, что вы написали, что ваша веб-камера не работает с Camorama.
ксисыромы
Не могли бы вы объяснить более подробно? Человек не покрывает опцию замедленной съемки :(
Марс Робертсон