Jak zrobić film poklatkowy lub film poklatkowy za pomocą kamery internetowej?

28

Mam kamerę internetową, która działa jako urządzenie v4l2.

Jaki jest najwygodniejszy sposób przechwytywania filmu poklatkowego lub poklatkowego ?

NB

zatrzymanie ruchu i upływ czasu są powiązane, ale koncepcyjnie różne.

Poklatkowy to miejsce, w którym robisz zdjęcie sceny w ustalonych odstępach czasu, a następnie łączysz ją w wideo (wygląda na to, że idzie naprawdę szybko).

Zatrzymanie ruchu to miejsce, w którym kontrolujesz scenę i robisz zdjęcie dla każdej wprowadzonej zmiany, aby utworzyć animację (np. Wallace i Grommit).

Aplikacja poklatkowa musi być w stanie zrobić zdjęcie w ustalonych odstępach czasu.

Seppo Erviälä
źródło
Podobne pytanie na zdjęciach zawiera interesujące odpowiedzi, które częściowo się pokrywają.
anarcat

Odpowiedzi:

40

Przechwytywanie zillion zdjęć.

Pierwszym krokiem jest robienie zdjęć. Wyobraźmy sobie, że chcesz zrobić zdjęcie co 10 sekund i zapisać je w katalogu na pulpicie

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

Używamy streamerdo przechwytywania, więc zainstalujmy go:

sudo apt-get install streamer

A teraz chcemy uchwycić

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

-tto liczba klatek, które chcemy uchwycić. -rto liczba klatek na sekundę. To powinno uchwycić jedną klatkę na sekundę. Jeśli skompresujesz to do 30 klatek na sekundę, jedna minuta przechwytywania stanie się 2 sekundami filmu. Będziesz chciał dostroić to odpowiednio w zależności od tego, ile chcesz wyjściowego wideo.

Ta linia da 2000 zdjęć, nagrywanie zajmie pół godziny, a przy 30 klatkach na sekundę wygeneruje nieco ponad 1 minutę wideo.

Kładąc wszystko razem

Zamierzam użyć ffmpeg. Istnieje wiele różnych sposobów na złożenie go w całość, w tym mencoderjednak wolę ffmpegspojrzenie na życie. Po zainstalowaniu ( sudo apt-get install ffmpeg) po prostu rozwal to:

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

Ustawienia jakości nie są podobne do ustawień mojej kamery internetowej, więc możesz chcieć więcej zabawy z opcjami, aby uzyskać lepsze kodowanie, ale powinno to wygenerować fajne wideo 30 klatek na sekundę, skompresowane w formacie x264.

Możesz chcieć bawić się z framerate ( -r), ale nie schodziłbym poniżej 15 fps.

Oli
źródło
1
Potrzebowałoby co dziesięć sekund -r 0.1.
Seppo Erviälä
man streamernie opisuje, co robi każdy parametr. Gdzie mogę uzyskać informacje o jparametrze? Jak mogę go przechwytywać, dopóki nie naciskam CTRL + C przy danym FPS?
Tomáš Zato - Przywróć Monikę
@oli ffmpegjuż dla mnie nie działa. Czego powinienem użyć?
Tim
1
@ChrisH Technicznie jest w porządku, chodzi mi tylko o to, że jest to podstawowa funkcja zapewniająca płynne odtwarzanie wideo. Zależy to jednak w dużej mierze od tego, jak szybko je przyjmujesz.
Oli
2
@ TomášZato streamer -hjest znacznie obszerniejszy. Nienawidzę, gdy programiści wkładają wiele wysiłku, --helpale nic w stronę man.
WasabiFlux
9

Aby przechwytywać co X sekund z kamery internetowej, użyj ruchu.

zainstalować motion

sudo apt-get install motion lub sudo aptitude install motion

Skonfiguruj ruch na każde X sekund

sudo nano /etc/motion/motion.conf

Zmień zmienne minimum_frame_time i snapshot_interval na taką samą liczbę sekund, jaką chcesz zrobić zdjęcie kamerą internetową.

10 minut = 600 sekund
20 minut = 1200 sekund
30 minut = 1800 sekund
1 godzina = 3600 sekund
2 godziny = 7200 sekund i tak dalej ...

uruchom ruch z sudo motionzatrzymaj za pomocą CTRL+C

UWAGA - Skonfiguruj motion.conf, aby zapisać pliki w innym katalogu niż domyślny / tmp. Na przykład twój folder domowy. Ponieważ przejście do / tmp wymaga więcej uprawnień. W pliku motion.conf znajdziesz również wiele przydatnych opcji dla wielu innych rzeczy, które mogą ci się spodobać.

Luis Alvarado
źródło
To o wiele lepsze niż streamer. Nie jestem pewien, czy podoba mi się rozwiązanie, które musi mieć root, i wydaje się, że tracę możliwość używania go jak lusterka wstecznego, ale jest znacznie lepsze niż streamer i może rozwiązać inny problem, na który chciałem spojrzeć o, który robi zdjęcie tylko wtedy, gdy tam jestem. Oznaczę to jako rozwiązane, jeśli mogę rozwiązać inne problemy.
Dave Jacoby
W rzeczywistości nie potrzebujesz dostępu do roota, aby z niego korzystać. Potrzebujesz tylko uprawnień roota, aby edytować plik konfiguracyjny.
Luis Alvarado,
Podejrzewam, że jeśli chcesz napisać do domyślnej ścieżki, może to być również konieczne, ale to pierwsza rzecz, którą zmieniłem. Dzięki.
Dave Jacoby
Nie ma problemu, kolego. Miło, że mogłem pomóc.
Luis Alvarado,
Próbowałem tego. Działa OK. W pewnym momencie mogę spróbować ponownie. Ale nie dało mi to widoku z tyłu, który cenię bardziej niż automatyczne robienie zdjęć. Więc prowadzę teraz Cheese.
Dave Jacoby
7

gTimelapse ( link do pobrania )

wprowadź opis zdjęcia tutaj

Aplikacja do przechwytywania obrazów do generowania filmów poklatkowych, zbudowana na bibliotekach gPhoto2 i wxWidgets.

Skompiluj instrukcje

Pobierz źródło ze strony sourceforge

w terminalu wpisz:

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

Aby uruchomić typ aplikacji

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

zobacz ten blog, aby uzyskać dalsze przydatne informacje

wyświetla listę wszystkich kompatybilnych urządzeń obsługiwanych przez aplikację

nb 3

Przeczytałem, że gphoto2 nie obsługuje kamer internetowych - i tak zostawię tę odpowiedź widoczną na wypadek, gdyby ktoś chciał spróbować tej odpowiedzi za pomocą przyzwoitego aparatu cyfrowego zamiast kamery internetowej.

fossfreedom
źródło
Pobranie i skompilowanie wxWidgets ze wszystkimi warunkami wstępnymi zajęło sporo czasu. Skompilowałem również gTimelapse, ale po prostu ulega awarii: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): stwierdzenie, że „pozycja” nie powiodła się w Check (): wxMenu :: Check: brak takiego elementu [Debugowanie] Generowanie śladu stosu ... proszę czekać Ślad śledzenia / pułapki punktu przerwania
Seppo Erviälä
ok - dzisiaj będę musiał kiedyś zbudować siebie - dodam kilka instrukcji do mojej odpowiedzi (zakładając, że mogę to sobie zbudować).
fossfreedom
Jest to w rzeczywistości bardzo pomocne, ponieważ mam aparat cyfrowy obsługiwany przez gphoto2. Nie wiedziałem, że taka biblioteka istnieje.
Seppo Erviälä
1

Użyłem do tego Stopmotion, to jest w centrum oprogramowania. Możesz również przechwytywać za pomocą Cheese, ale musisz zmienić konfigurację Cheese, aby zwiększyć maksymalną liczbę zdjęć. Najłatwiej było po prostu użyć Stopmotion do całego procesu.

Tom Brossman
źródło
1

Najlepszym i najłatwiejszym sposobem na to jest zainstalowanie Motion . To pełnowymiarowe oprogramowanie do nadzoru systemów operacyjnych opartych na systemie Linux.

Zainstaluj za pośrednictwem centrum oprogramowania

Vesa
źródło
1

Szybka, brudna, ale nieco bardziej elastyczna opcja jest następująca:

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

Tutaj dodaję -pattern_type glob, używając symboli wieloznacznych *i oddanie moich nazwę pliku w pojedynczych cytatów: 'image-*.jpg'.

Korzyści: ta składnia pozwala rozpocząć od dowolnej liczby i mieć dowolny wzorzec w numeracji (często tworzę liczenie do 20, na przykład około 20000).

Wady: Ta składnia nie pozwala na pomijanie powtarzających się liczb, jak pozwala na to składnia '% ## d'. Ponadto nie można mieć schematu numeracji bez poprzedzających zer. Oznacza to, że schemat nazewnictwa plików musi być taki jak 00001, 00002, ... 00033 ... (Numeracja nie może być 1,2,3, ... 33, ..., w przeciwnym razie liczba „3” będzie sortować się między Na przykład „39” i „40”).

Osobno też zauważ, że musiałem umieścić nazwę pliku wejściowego w pojedynczym cudzysłowie, w przeciwnym razie ffmpeg próbował zastąpić wszystkie moje pliki zdjęciowe kopią pierwszego obrazu (zawsze dobrym pomysłem jest skopiowanie kopii zapasowej przed manipulowaniem plikami ).

Z tej edycji przez anonimowego użytkownika.

Tim
źródło
0

Powinieneś być w stanie skonfigurować ruch (w motion.conf) do przesyłania strumieniowego - domyślnie jest on przesyłany strumieniowo przez port 8081. Wszystko, co musisz zrobić, aby uzyskać lusterko wsteczne, to otworzyć VLC, „Otwórz strumień sieci” i wskaż na http: // localhost: 8081 .

Derek
źródło
0

Camorama to przeglądarka / rejestrator kamery internetowej, który zwykłem robić zdjęcia w odstępach 1 minuty i przesyłać je do serwera internetowego z mojej kamery internetowej; to prosta konfiguracja. Jest również dostępny w Centrum oprogramowania Ubuntu lub możesz go zainstalować za pomocą:

sudo apt-get install camorama

Mam nadzieję że to pomoże.

kicsyromy
źródło
Niestety, właśnie zobaczyłem, że Twoja kamera internetowa nie działa z Camoramą.
kicsyromy
Czy możesz wyjaśnić bardziej szczegółowo? Człowiek nie obejmuje opcji timelapse :(
Mars Robertson,