Videodan Küçük Resim Yap


11

Bir videodan nasıl basit bir çekim yapabilirim? Tercihen komut satırından mı?

Fikir: Eşit yerleştirilmiş 9 (zaman çizelgesinde) kez 9 anlık görüntü çekin ve bunları JPG olarak kaydedin

Misal:

Movie length = 10 min
T1= snapshot of 1 min
T2= snapshot of 2 min
......
T9= snapshot of 9 min
   |   |
 T1| T2| T3
---+---+---
 T4| T5| T6
---+---+---
 T7| T8| T9
   |   |

Bunu yapmak için en iyi program nedir? Açık kaynaklı programlar var mı?

Yanıtlar:


5

ffmpeg , çerçeveleri çıkarmak da dahil olmak üzere videoları işlemek için mükemmel bir açık kaynaklı araçtır.

Belirli bir zaman damgasından tek kare çıkarmak için aşağıdaki komutu kullanabilirsiniz

ffmpeg -i video.avi -r 1  -t 00:01:00 -f image2 image%05d.png

-r kare hızıdır. Ayrıca şu komutu kullanabilirsiniz:

ffmpeg -i video.avi -r 1/1440 -f image2 image%05d.png

dakikada bir kare almak için (24FPS video varsayarak). % 05d, her küçük resim görüntüsünün sıra sayısının 5 basamak kullanılarak biçimlendirilmesi gerektiği anlamına gelir.

Görüntüleri montaj (ızgara) olarak birleştirmek istiyorsanız, ffmpeg kullanarak kareleri çıkardıktan sonra imagemagick'i kullanabilirsiniz.



1

vcsi , Python'da yazılmış ve aşağıdaki komutla 3'e 3 anlık görüntüler ızgarası oluşturmak için kullanılabilen bir komut satırı aracıdır:

vcsi -g 3x3 video.mkv -o output.jpg

0

Kullanım durumum, videodan yalnızca bir küçük resim, <video>etiket posteri olarak kullanılacak tek bir dosya . Peki, bunu yapmanın hızlı bir yolu ne olurdu?

İle ffmpegşunları yapabilirsiniz:

ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

Bu size ikinci yakınında çerçevesini verecek 123ait video.mp4olarak kaydedilir poster.jpg.

Gördüğünüz gibi sorun, hangi saniyenin doğru olduğunu bilmemiz gerektiğidir.

Bağımlılıklarımızı düşük tutmak için bunun için ffmpeg kullanacağız:

# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

Videonun% 25'i ortak bir seçim gibi görünüyor, ancak videoyu% 33 veya% 50 de yapabilirsiniz.

İşte bunu yapan bir komut dosyası .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.