Alat cepat untuk menghasilkan galeri video thumbnail untuk baris perintah

14

Saya menggunakan gframecatcher untuk menghasilkan galeri video thumbnail, yaitu sesuatu seperti ini:

masukkan deskripsi gambar di sini

Namun ini adalah alat GUI dan saya ingin membuat galeri secara rekursif untuk setiap video dalam struktur direktori, jadi saya mencari alat baris perintah cepat untuk melakukan ini.

siswa
sumber

Jawaban:

28

Tarik pengambilan gambar (ini tingginya 100 piksel, dan pertahankan rasio aspek), laju ( -r) adalah per detik (ini menghasilkan satu bingkai setiap ~ 5 menit), ini juga menambahkan cap waktu untuk menampilkan gambar.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Kemudian gunakan ImageMagickuntuk membuat gambar galeri Anda:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png
utopiabound
sumber
7
Anda dapat menggunakan pecahan untuk kurs ( -r). Ini membuatnya lebih mudah dan lebih akurat untuk menentukan waktu. 5 menit = 300 detik ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png.
DutGRIFF
avconvberfungsi dengan cara yang sama, jika Anda tidak memiliki ffmpeg(beberapa rilis Ubuntu).
Ken Sharp
2
Ini berfungsi, tetapi membutuhkan pemipaan melalui seluruh file video. superuser.com/questions/538112/… memberikan beberapa contoh yang berupaya menemukan thumbnail yang bermakna, serta menghindari keharusan duduk dan memproses seluruh video untuk mendapatkan beberapa bingkai.
Skrylar
Ini tidak menambahkan stempel waktu ke gambar.
felwithe
Bagaimana Anda melakukan ini dalam batch untuk banyak video di direktori?
Paul Jones
12

Saya suka menggunakan skrip bash baris perintah unix yang mudah digunakan bernama VCS - Video Contact Sheet. Halaman resmi mereka: http://p.outlyer.net/vcs/

Jauh lebih mudah digunakan daripada GUI

'' Ini adalah skrip bash yang dimaksudkan untuk membuat lembar kontak video (pratinjau) alias thumbnail atau pratinjau video. Video apa pun yang didukung oleh mplayer dan ffmpeg dapat digunakan oleh skrip ini. '' Anda harus memiliki salah satu ffmpegatau mplayerdiinstal pada sistem Anda.

Pemakaian:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

Bagaimana perintah itu bekerja

Edit input-filname ke nama file video Anda!

  • -U0(tidak ada nama di footer - atau menampilkan nama host - perhatikan ini nol bukan hurufnya O)

  • -i 1m(mengatur interval waktu pengambilan dalam menit - dalam hal ini setiap menit - Anda juga bisa menggunakan -nyang menetapkan jumlah tangkapan misalnya -n 21akan membuat 21 gambar, tetapi jangan gunakan keduanya)

  • -c set jumlah kolom (di sini 3 kolom)

  • -H 200 -a 300/200 (mengatur ukuran dan aspek sehingga file tidak terlalu besar - sepertinya Anda harus melakukan keduanya)

  • -o filename.jpg(gunakan .jpgsebagai standar karena .pngterlalu besar - dan ubah nama file menjadi salah satu pilihan Anda!)

Kode Falasi
sumber
7

Yang ini sepertinya sesuai dengan tagihan , gratis dan open source dan bahkan berfungsi di Windows :)

Bahkan memiliki hal-hal yang canggih, seperti bukannya membabi buta memilih frame pada interval tertentu, ia dapat memilih yang cukup dekat tetapi tidak terlihat terlalu buram, jadi daripada melakukan ini:

tangkapan layar

Anda bisa memberikan parameter ( -D6) sehingga ia melakukan ini:

tangkapan layar yang lebih baik

Ditambah lagi, saya sangat suka tanpa batas, sehingga gambarnya bisa sedikit lebih besar.

Camilo Martin
sumber
7

Ada solusi dari forum ffmpeg.

Untuk membuat beberapa tangkapan layar dan menempatkannya dalam satu file gambar (membuat ubin), Anda dapat menggunakan filter video ubin FFmpeg, seperti ini:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

Itu akan mencari 10 detik ke dalam film, pilih setiap frame 1000, skala ke 320x240 piksel dan buat 2x3 ubin di gambar output out.png.

Posting asli di sini - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597

Maxim Kruglov
sumber
Juga, ffmpeg tampaknya mendukung "pangkas" dengan sintaks yang sama.
beberapa ide
4

Ini adalah bagaimana saya memproses lembar kontak sederhana menggunakan AWS EC2, dari mac saya.

Langkah # 1: Buat Mesin Virtual EC2 di Amazon Web Services

Saya menggunakan:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

Langkah # 2: Konfigurasikan instance

Ini semua dijalankan dari mac saya untuk kenyamanan, tetapi Anda juga bisa menjalankan hanya perintah "sudu su ..." dari baris perintah EC2.

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

Mengganti 11.22.33.44 dengan EC2 IP Anda.

Langkah # 3: Memproses video

Kirim videonya:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov [email protected]:/home/ec2-user/

Memprosesnya menjadi lembar kontak:

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

Ubah / Users / mdouma ke root lokal Anda Ubah ", 1" ke beberapa nomor lain, misalnya, ", 7", jika Anda hanya ingin setiap frame ke-7. Ubah 111 ke ukuran apa pun yang Anda inginkan

Salin kembali ke mac saya:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  [email protected]:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png
beberapa ide
sumber
Ini tip yang bagus. Perhatikan bahwa sudo suitu tanpa tujuan.
Ken Sharp
2
Mengapa Anda mengirim ini ke EC2? Mengapa tidak jalankan saja di mac Anda secara lokal? file video bisa berukuran besar GB ...
haventchecked
4

Alat ini membantu saya (2019-02) - dan itu dipertahankan. Banyak opsi - kisi, kualitas, font, warna, batas, interval, ...

https://github.com/amietn/vcsi

Buat lembar kontak video. Lembar kontak video adalah gambar yang terdiri dari thumbnail pengambilan video yang disusun pada kisi.

Anda hanya perlu ffmpeg dan python.

hrvoj3e
sumber
Ini sangat bagus - terima kasih!
Ash
1

Paket 'imagemagick' memiliki utilitas untuk hal-hal seperti ini.

http://www.imagemagick.org/Usage/thumbnails/

Ada juga pustaka API yang menggunakan imagemajick untuk banyak bahasa .

goldilocks
sumber
Apa yang akan menjadi perintah yang sesuai?
siswa
convertmungkin yang paling umum. Lihatlah bagian menuju Pembuatan Gambar Mini Umum pada halaman pertama yang saya tautkan.
goldilocks
1

Totem - pemutar video default untuk 14,04 dan beberapa versi Ubuntu sebelumnya - memiliki opsi menu dengan opsi sederhana (di bawah menu Edit, "Buat Galeri Screenshot ..."). Ada juga setara baris perintah (ish) yang disebut "totem-video-thumbnailer" yang memiliki halaman manual yang memberi tahu Anda cara menggunakannya; Saya menulis skrip bash sederhana yang menggunakan output dari perintah find (berhati-hati untuk tidak memisahkan file dengan spasi dalam nama) untuk menghasilkan galeri screenshot thumbnail secara otomatis (atau kontak-sheet sebagaimana disebut di atas) untuk file di atas tertentu ukuran dalam direktori yang belum memilikinya.

Saya bisa mengunggahnya ke github saya di bawah ~ jgbreezer jika ada yang menginginkannya. Padahal solusi menggunakan ffmpeg dan hal-hal lain mungkin lebih fleksibel dan dapat diandalkan; Saya tampaknya mendapatkan output kesalahan dari perintah totem tentang tidak menemukan frame tertentu tetapi tampaknya tetap berhasil sebagian besar waktu.

Breezer
sumber
0

Saya menginginkan hal yang sama dan akhirnya googling menggunakan ffmpeg dan imagemagick. BUKAN IMHO 'cepat'. Kemudian menemukan skrip bash bernama SlickSlice (terakhir diperbarui 2008 tetapi bekerja dengan baik pada kemarin). Instal dan sesuaikan dengan keinginan saya menggunakan file konfigurasi dan skrip itu sendiri. Script menggunakan ImageMagick dan MPlayer.

Saya membuat detail cara dan penyesuaian setelah saya berhasil menggunakannya. Setelah berhasil diinstal, Anda dapat membuat thumbnail timeline video dengan perintah sesederhana:
slickslice -x "InputFile.mp4"(standar 4 kolom x 15 baris) atau
slickslice -x "InputFile.mp4" -S 6x10 (untuk 6 kolom x 10 baris).

Ini menghasilkan SLICKSLICED_InputFile.mp4.jpegdan saya mengkustomisasi untuk menghasilkan InputFile.mp4-screen.jpegdengan mengedit skrip bash itu sendiri.

Saidul Hassan
sumber