Bagaimana cara membuat video timelapse dari koleksi foto di Linux?

19

Saya ingin membuat timelapse dari koleksi gambar, di bawah Ubuntu. Saya ingin membuat video HD, dan idealnya menambahkan soundtrack.

Joseph_Thala
sumber
Saya belum melihat itu. Saya dapat menghapus pertanyaan ini dan memposting jawaban saya di sana. Apakah itu oke?
Frederico Schardong
Saya bahkan tidak yakin apakah ini situs stackexchange terbaik untuk ini. Saya hanya ingin membagikan apa yang saya lakukan.
Frederico Schardong
Ada pertanyaan serupa di askubuntu.com . Jawabannya sebagian besar dibahas di sini pada saat penulisan, tetapi itu mungkin berubah di masa depan, tentu saja.
anarcat

Jawaban:

11

Ffmpeg akan melakukannya. Jika Anda memiliki gambar img001.jpg, img002.jpg, img003.jpg, ...maka pada baris perintah lakukan:

ffmpeg -i img*.jpg output.mpeg

Ada lebih banyak opsi yang diberikan di ffmpeg --helpatau halaman manual, atau web. Ini memungkinkan kontrol atas frame rate dan format output.

Unapiedra
sumber
Menggunakan ini menghasilkan kesalahan bagi saya, karena menganggap .jpgfile yang terakhir seperti file output. Saya mendapatkan File 'DSCF6134.JPG' already exists. Overwrite ? [y/N]- tidak terlalu bagus. Solusi saya adalah membuat daftar file dengan \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txtdan kemudian memuatnya ffmpeg -f concat -i files.txt output.mpeg.
anarcat
Dengan versi ffmpeg lainnya, versi berikut ini berfungsi tanpa mencoba menimpa gambar:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Patrick R.
9

Pertama kita mengganti nama semua file * .JPG berdasarkan tanggal pembuatannya. Terkadang kamera mengubah nama file atau hanya memesannya entah bagaimana tidak seperti yang kita inginkan. Namun, mengubah nama mereka pada tanggal pembuatan selalu berhasil:

jhead -n%Y%m%d-%H%M%S *.JPG

Setelah itu kami meletakkan daftar ini di file:

ls -1tr | grep -v files.txt > files.txt

Dan kemudian gunakan mencoderuntuk membuat AVIvideo menggunakan 20 fps. Perhatikan bahwa ini akan menghasilkan file video besar, biasanya sekitar ukuran yang sama dari semua gambar yang dijumlahkan.

mencoder -nosound -noskip -oac copy -ovc copy -o output.avi -mf fps=20 'mf://@files.txt'

Saya biasanya mengambil gambar untuk timelapse dengan resolusi terendah dari kamera saya (5 MP), yang memiliki rasio aspec 4: 3. Untuk menghasilkan video 1080p yang tepat, gambar pertama kali dipindai ulang dengan lebar 1920 piksel dan kemudian saya memotongnya menjadi tinggi 1080. Dengan cara ini saya tidak mengubah konten foto, hanya memotong:

ffmpeg -i output.avi -y -sameq -vf scale=1920:1440,crop=1920:1080 output-final.avi

Alasan saya menggunakan mencoder untuk menyatukan foto adalah karena saya mendapat segmentation faultffmpeg.

Frederico Schardong
sumber
Untuk segfault akan berguna untuk mengetahui versi ffmpeg Anda.
Unapiedra
Jika seperti saya, Anda memotret dalam 3: 2 (D750 saya masih 6016x4016) dan membutuhkannya dalam 16: 9 (untuk video 4k) 3840x2160 Anda dapat menggunakan FFMPEG untuk Pillerbox video dan pad jalur trem hitam di samping dengan perintah ini - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = menurun, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Video akan lebih besar tetapi tidak ada penurunan kualitas karena ini downscaling
Rob
dalam ffmpegperintah Anda , -sameqopsi sekarang diganti dengan-qscale 0
transang
3

Blender adalah solusi yang baik jika Anda berurusan dengan gerakan timelapse (hyperlapse) atau rekaman tidak stabil. Ini memiliki kemampuan pelacakan gerak sehingga Anda dapat memilih titik tetap untuk melacak seluruh timelapse. Anda juga dapat memperbaiki masalah rotasi.

Reed G. Law
sumber
0

Anda dapat menggunakan mencoder. Opsi cukup jelas:

  • daftar semua file gambar Anda.

Jika semuanya ada di direktori curent dengan nama yang diurutkan dan Anda ingin daftar di file /tmp/files.txt:

ls -1 *jpg > /tmp/files.txt

  • Gunakan mencoder dengan opsi yang sesuai.

Jika Anda ingin file output menjadi /tmp/test.avi dengan 30fps:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -o /tmp/test.avi -mf type=jpeg:fps=30 mf://@/tmp/files.txt

Manu H
sumber
0

Kdenlive juga dapat membuat timelapses menggunakan Add Slideshow Clipmenu, seperti yang dijelaskan dalam tutorial ini .

Menurut situs yang sama , Openshot memiliki fungsi yang serupa tetapi tidak merekomendasikannya karena "terlalu buggy". Namun, jika itu adalah editor video pilihan Anda, Anda akan senang mengetahui bahwa Anda dapat menyeret dan melepaskan urutan file yang dinamai dengan benar (001.jpg ke NNN.jpg) ke jendela Openshot untuk mengimpornya sebagai timelapse juga.

anarcat
sumber
Panduan itu dari 2014. OpenShot telah terbukti banyak selama beberapa tahun terakhir, sekarang jauh lebih dapat diandalkan.
vclaw