Как сделать Stop Motion или покадровой видео с веб-камерой?
У меня есть веб-камера, которая работает как устройство v4l2.
Каков наиболее удобный способ съемки видео в режиме стоп-кадра или покадровой съемки?
NB
остановка и замедленная съемка взаимосвязаны, но концептуально различны.
Промежуток времени - это когда вы фотографируете сцену с заданным интервалом, а затем объединяете ее в видео (похоже, что оно идет очень быстро).
Остановка движения - это место, где вы управляете сценой и делаете снимок для каждого изменения, которое вы делаете, чтобы сформировать анимацию (например, Уоллес и Громмит).
Приложение для покадровой съемки должно иметь возможность делать фотографии с заданным интервалом.
8 ответов
Захватывает миллион изображений.
Первый шаг - захват изображений. Представим, что вы хотите делать снимок каждые 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
Взгляд на жизнь. После его установки (sudo apt-get install ffmpeg
) просто отмахнулся от этого:
ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4
Настройки качества не похожи на настройки моей веб-камеры, поэтому вы можете поэкспериментировать с опциями, чтобы получить лучшее кодирование, но это должно дать вам хорошее видео со скоростью 30 кадров в секунду, сжатое в x264.
Вы можете поиграть с частотой кадров (-r
) но я бы не стал опускаться ниже 15fps.
Для захвата каждые X секунд с веб-камеры используйте движение.
устанавливать motion
sudo apt-get install motion
или же sudo aptitude install motion
Настройте движение для каждого количества секунд Х
sudo nano /etc/motion/motion.conf
Измените значения переменных imum_frame_time и snapshot_interval на то же количество секунд, которое вы хотите сделать с помощью веб-камеры.
10 минут = 600 секунд
20 минут = 1200 секунд
30 минут = 1800 секунд
1 час = 3600 секунд
2 часа = 7200 секунд и так далее...
запустить движение с sudo motion
остановить это с помощью CTRL + C
ПРИМЕЧАНИЕ. - Настройте файл motion.conf для сохранения файлов в другом каталоге, чем каталог по умолчанию /tmp. Например, ваша домашняя папка. Поскольку переход к / tmp требует больше привилегий. Вы также найдете много полезных опций в файле motion.conf для многих других вещей, которые могут вам понравиться.
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 не поддерживает веб-камеры - я оставлю этот ответ видимым в любом случае, на всякий случай, если кто-то захочет попробовать этот ответ приличной цифровой камерой вместо веб-камеры.
Быстрый, грязный, но несколько более гибкий вариант выглядит следующим образом:
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 попытался перезаписать все мои файлы изображений копией первого изображения (всегда рекомендуется скопировать резервную копию, прежде чем манипулировать файлами).).
Из этого редактирования от анонимного пользователя.
Лучший и простой способ сделать это - установить Motion. Это полнофункциональное программное обеспечение для наблюдения за операционными системами на базе Linux.
Я использовал Stopmotion, чтобы сделать это, это в центре программного обеспечения. Вы также можете снимать с сыром, но вы должны изменить конфигурацию сыра, чтобы увеличить максимальное количество изображений. Я обнаружил, что проще всего использовать Stopmotion для всего процесса.
Camorama - это средство просмотра / записи веб-камеры, которое я использовал для съемки фотографий с интервалом в 1 минуту и загрузки их на веб-сервер с моей веб-камеры; это простая установка. Также он доступен в Центре программного обеспечения Ubuntu или вы можете установить его, используя:
sudo apt-get install camorama
Надеюсь это поможет.
Вы должны иметь возможность настроить движение (в файле motion.conf) для потоковой передачи - по умолчанию он транслируется на порт 8081. Все, что вам нужно сделать, чтобы получить зеркало заднего вида, это открыть VLC, "Открыть сетевой поток" и укажите на http://localhost:8081/.