Bagaimana cara membuat video Stop Motion atau Time-lapse dengan webcam?

28

Saya memiliki webcam yang berfungsi sebagai perangkat v4l2.

Apa cara paling nyaman untuk merekam video berhenti-gerak atau selang waktu ?

NB

stop-motion dan time-lapse terkait tetapi secara konsep berbeda.

Selang waktu adalah tempat Anda mengambil foto pemandangan pada interval yang ditentukan dan kemudian menggabungkannya ke dalam video (yang sepertinya berjalan sangat cepat).

Stop-motion adalah tempat Anda mengontrol adegan dan mengambil gambar untuk setiap perubahan yang Anda buat, untuk membentuk animasi (mis. Wallace dan Grommit).

Aplikasi untuk selang waktu harus dapat mengambil foto pada interval yang ditentukan.

Seppo Erviälä
sumber
Pertanyaan serupa dalam Foto memiliki jawaban menarik yang sebagian tumpang tindih.
anarcat

Jawaban:

40

Mengambil miliaran gambar.

Langkah pertama adalah mengambil gambar. Bayangkan Anda ingin mengambil foto setiap 10 detik dan menyimpannya di direktori yang berada di desktop Anda

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

Kami menggunakan streameruntuk melakukan penangkapan jadi mari kita instal:

sudo apt-get install streamer

Dan sekarang kami ingin menangkap

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

-tadalah jumlah bingkai yang ingin kami tangkap. -radalah frame per detik. Jadi ini harus ambil satu frame setiap detik. Jika Anda memampatkannya menjadi video 30fps, pengambilan satu menit menjadi 2 detik video. Anda ingin menyetel ini dengan tepat tergantung pada seberapa banyak output video yang Anda inginkan.

Baris itu akan memberi Anda 2.000 gambar, itu akan memakan waktu setengah jam untuk merekam dan, pada 30fps, akan menghasilkan lebih dari 1 menit video.

Menyatukan semuanya

Saya akan menggunakan ffmpeg. Ada banyak cara menyatukannya termasuk mencodertapi saya hanya lebih suka ffmpegpandangan hidup. Setelah menginstalnya ( sudo apt-get install ffmpeg) baru saja menghapus ini:

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

Pengaturan kualitas tidak ada yang seperti webcam saya sehingga Anda mungkin ingin bermain-main dengan opsi lebih banyak untuk mendapatkan encode yang lebih baik, tetapi itu akan menghasilkan Anda video 30fps yang bagus, dikompresi di x264.

Anda mungkin ingin bermain-main dengan framerate ( -r) tapi saya tidak akan pergi di bawah 15fps.

Oli
sumber
1
Setiap sepuluh detik akan membutuhkan -r 0.1.
Seppo Erviälä
man streamertidak menjelaskan apa yang dilakukan setiap parameter. Di mana saya bisa mendapatkan informasi tentang jparameter? Bagaimana saya bisa menangkapnya sampai saya menekan CTRL + C, dengan FPS yang diberikan?
Tomáš Zato - Kembalikan Monica
@oli ffmpegtidak bekerja lagi untuk saya. Apa yang harus saya gunakan?
Tim
1
@ ChrisH Secara teknis baik-baik saja, maksud saya itu adalah dasar untuk video yang mulus. Itu sangat tergantung pada seberapa cepat Anda mengambilnya.
Oli
2
@ TomášZato streamer -hjauh lebih komprehensif. Saya benci ketika pengembang melakukan banyak upaya untuk --helptetapi tidak ada untuk halaman manual.
WasabiFlux
9

Untuk menangkap setiap jumlah X detik dari gerakan penggunaan webcam.

Memasang motion

sudo apt-get install motion atau sudo aptitude install motion

Konfigurasikan gerakan untuk setiap jumlah X detik

sudo nano /etc/motion/motion.conf

Ubah variabel minimum_frame_time dan snapshot_interval ke jumlah detik yang sama dengan yang Anda ingin ambil gambar dengan webcam.

10 Menit = 600 Detik
20 Menit = 1200 Detik
30 Menit = 1800 Detik
1 Jam = 3600 Detik
2 Jam = 7200 Detik dan seterusnya ...

jalankan gerakan dengan sudo motionhentikan dengan CTRL+C

CATATAN - Konfigurasikan motion.conf untuk menyimpan file di direktori lain selain dari default / tmp. Misalnya folder rumah Anda. Karena pergi ke / tmp membutuhkan lebih banyak hak istimewa. Anda juga akan menemukan banyak opsi berguna di motion.conf untuk banyak hal lain yang mungkin Anda sukai.

Luis Alvarado
sumber
Itu jauh lebih baik daripada streamer. Tidak yakin saya suka solusi must-have-root, dan sepertinya saya kehilangan kemampuan untuk menggunakannya seperti kaca spion, tetapi jauh lebih baik daripada streamer, dan mungkin memecahkan masalah lain yang ingin saya lihat di, yang hanya mengambil gambar jika saya di sana. Akan menandai ini diselesaikan jika saya dapat memperbaiki masalah lainnya.
Dave Jacoby
Sebenarnya Anda tidak perlu akses root untuk menggunakannya. Anda hanya perlu akses root untuk mengedit file konfigurasi.
Luis Alvarado
Saya kira jika Anda ingin menulis ke jalur default, mungkin perlu juga, tapi itu hal pertama yang saya ubah. Terima kasih.
Dave Jacoby
Tidak masalah sobat. Senang untuk membantu.
Luis Alvarado
Saya mencobanya. Berhasil. Saya mungkin akan mencobanya lagi di beberapa titik. Tapi itu tidak memberi saya aspek tampilan belakang, yang saya nilai lebih dari pengambilan gambar otomatis. Jadi, saya menjalankan Keju sekarang.
Dave Jacoby
7

gTimelapse ( Tautan Unduhan )

masukkan deskripsi gambar di sini

Aplikasi untuk mengambil gambar untuk menghasilkan video timelapse, dibangun di pustaka gPhoto2 dan wxWidgets.

Kompilasi instruksi

Unduh sumber dari situs web sourceforge

pada terminal ketik yang berikut ini:

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

Untuk menjalankan jenis aplikasi

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

lihat blog ini untuk info berguna lebih lanjut

daftar semua perangkat yang kompatibel yang didukung aplikasi

nb 3

Saya sudah membaca gphoto2 tidak mendukung webcam - Saya akan membiarkan jawaban ini tetap terlihat kalau-kalau siapa pun ingin mencoba jawaban ini dengan kamera digital yang layak bukan webcam.

kebebasan fosil
sumber
Butuh beberapa waktu untuk mengambil dan menyusun wxWidgets dengan semua prasyarat. Saya juga mengkompilasi gTimelapse tetapi hanya crash dengan: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): menyatakan "item" gagal di Check (): wxMenu :: Periksa: tidak ada item seperti itu [Debug] Menghasilkan jejak tumpukan ... harap tunggu Tracing / breakpoint trap
Seppo Erviälä
ok - saya akan pergi hari ini untuk membangun sendiri - saya akan menambahkan beberapa instruksi untuk jawaban saya (dengan asumsi saya sendiri bisa mendapatkan ini untuk membangun).
fossfreedom
Ini sebenarnya cukup membantu karena saya memiliki kamera digital yang didukung oleh gphoto2. Saya tidak tahu perpustakaan seperti ini ada.
Seppo Erviälä
1

Saya telah menggunakan Stopmotion untuk melakukan ini, itu ada di pusat perangkat lunak. Anda juga dapat menangkap dengan Keju, tetapi Anda harus mengubah konfigurasi Keju untuk meningkatkan jumlah gambar maksimal. Saya merasa paling mudah menggunakan Stopmotion untuk seluruh proses.

Tom Brossman
sumber
1

Cara terbaik dan mudah untuk melakukan ini adalah dengan menginstal Motion . Ini adalah perangkat lunak pengawasan skala penuh untuk sistem operasi berbasis Linux.

Instal melalui pusat perangkat lunak

Vesa
sumber
1

Opsi cepat, kotor, tetapi agak lebih fleksibel adalah sebagai berikut:

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

Di sini saya menambahkan -pattern_type glob, menggunakan wildcard *, dan menempatkan nama file saya di kutipan tunggal: 'image-*.jpg'.

Manfaatnya: Sintaks ini memungkinkan Anda untuk mulai dari nomor berapa pun dan memiliki pola apa pun dalam penomoran Anda (saya sering membuat hitungan dengan 20, mulai sekitar 20000 misalnya).

Kekurangannya: Sintaks ini tidak memungkinkan Anda untuk melewatkan angka berulang seperti sintaks '% ## d' memungkinkan. Selain itu, Anda tidak dapat memiliki skema penomoran tanpa sebelumnya 0s. Yaitu, skema penamaan file harus seperti 00001, 00002, ... 00033 ... (Penomoran tidak boleh 1,2,3, ... 33, ..., kalau tidak, angka '3' akan mengurutkan antara '39' dan '40' misalnya).

Secara terpisah, perhatikan juga bahwa saya harus meletakkan nama file input saya dalam tanda kutip tunggal, jika tidak ffmpeg mencoba menimpa semua file gambar saya dengan salinan gambar pertama (Itu selalu merupakan ide yang baik untuk menyalin untuk cadangan sebelum memanipulasi file ).

Dari hasil edit ini oleh pengguna anonim.

Tim
sumber
0

Anda harus dapat mengatur gerakan (in motion.conf) untuk melakukan streaming - secara default itu mengalir pada port 8081. Yang harus Anda lakukan untuk mendapatkan cermin 'tampilan belakang' Anda adalah membuka VLC, "Open Network Stream" dan arahkan ke http: // localhost: 8081 .

Derek
sumber
0

Camorama adalah penampil / perekam webcam yang saya gunakan untuk mengambil gambar, dengan interval 1 menit dan mengunggahnya ke server web, dari webcam saya; ini pengaturan yang mudah. Juga tersedia di Pusat Perangkat Lunak Ubuntu atau Anda dapat menginstalnya menggunakan:

sudo apt-get install camorama

Semoga ini membantu.

kicsyromy
sumber
Maaf, baru saja melihat bahwa Anda telah menulis webcam Anda tidak berfungsi dengan Camorama.
kicsyromy
Bisakah Anda jelaskan lebih terinci? Manusia tidak mencakup opsi timelapse :(
Mars Robertson