Utwórz miniaturę z wideo

10

Jak mogę zrobić proste nagranie z filmu. Najlepiej z wiersza poleceń?

Pomysł: weź 9 migawek dla 9 razy (nawet na osi czasu) razy i zapisz je jako pliki JPG

Przykład:

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
   |   |

Jaki jest najlepszy program do tego? Czy są jakieś programy typu open source?

Siga
źródło

Odpowiedzi:

5

ffmpeg to doskonałe narzędzie typu open source do manipulacji filmami, w tym do wyodrębniania klatek.

Aby wyodrębnić pojedynczą klatkę z określonego znacznika czasu, możesz użyć polecenia like

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

-r jest liczbą klatek na sekundę. Możesz także użyć polecenia like

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

aby uzyskać jedną klatkę co minutę (przy założeniu wideo 24 FPS). % 05d oznacza, że ​​liczba porządkowa każdego obrazu miniatury powinna być sformatowana przy użyciu 5 cyfr.

Jeśli chcesz łączyć obrazy jako montaż (siatkę), możesz użyć imagemagick po wyodrębnieniu ramek za pomocą ffmpeg.

Olli
źródło
1

To nie jest program wiersza poleceń, ale możesz także użyć qframecatchera .

W przypadku Ubuntu / Debian wymagania są następujące: sudo apt-get install libqt4-dev libxine-dev build-essential

wget http://download.berlios.de/qframecatcher/qframecatcher-0.4.1.tar.gz
tar xzf qframecatcher-0.4.1.tar.gz
cd qframecatcher/src
qmake
make
./qframecatcher

Źródło: http://blog.radevic.com/2008/06/how-to-create-movie-or-video-frame.html

Savvas Radevic
źródło
0

Mój przypadek użycia to tylko jedna miniatura z filmu, tylko jeden plik do użycia jako <video>plakatu z tagiem. Więc jaki byłby szybki sposób, aby to zrobić?

Za pomocą ffmpegmożesz to zrobić:

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

Który daje ramkę blisko sekundę 123z video.mp4zapisywane jako poster.jpg.

Problem, jak widać, polega na tym, że musimy wiedzieć, która sekunda jest właściwa.

Aby utrzymać nasze zależności na niskim poziomie, użyjemy do tego samego ffmpeg:

# 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

25% wideo wydaje się być powszechnym wyborem, ale możesz zrobić to 33% lub 50%.

Oto skrypt, który to robi .

Camilo Martin
źródło
0

vcsi to narzędzie wiersza polecenia napisane w języku Python, którego można użyć do utworzenia siatki migawek 3 na 3 za pomocą następującego polecenia:

vcsi -g 3x3 video.mkv -o output.jpg
zx228
źródło