Jak utworzyć film poklatkowy z kolekcji zdjęć w systemie Linux?

19

Chcę stworzyć timelapse z kolekcji zdjęć w Ubuntu. Chciałbym robić filmy HD, a najlepiej dodać ścieżkę dźwiękową.

Joseph_Thala
źródło
Nie widziałem tego Mogę usunąć to pytanie i opublikować tam swoją odpowiedź. Czy to w porządku?
Frederico Schardong,
Nie jestem nawet pewien, czy jest to najlepsza witryna wymiany stosów do tego celu. Chcę tylko podzielić się tym, co zrobiłem.
Frederico Schardong
Podobne pytanie znajduje się na askubuntu.com . Odpowiedzi są tu najczęściej omawiane w momencie pisania, ale to oczywiście może się zmienić w przyszłości.
anarcat

Odpowiedzi:

11

Ffmpeg to zrobi. Jeśli masz obrazy, img001.jpg, img002.jpg, img003.jpg, ...w wierszu poleceń wykonaj:

ffmpeg -i img*.jpg output.mpeg

Istnieje więcej opcji podanych na ffmpeg --helpstronach podręcznika lub w Internecie. Pozwalają one kontrolować szybkość klatek i format wyjściowy.

Unapiedra
źródło
Użycie tego powoduje błąd, ponieważ traktuje on ostatnie .jpgpliki jak plik wyjściowy. Rozumiem File 'DSCF6134.JPG' already exists. Overwrite ? [y/N]- nie tak świetnie. Moim rozwiązaniem było wygenerowanie listy plików \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txti załadowanie jej ffmpeg -f concat -i files.txt output.mpeg.
anarcat
W przypadku innych wersji ffmpeg następująca wersja działa bez próby przesłonięcia obrazów:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Patrick R.
9

Najpierw zmieniamy nazwy wszystkich plików * .JPG na podstawie daty ich utworzenia. Czasami aparaty zmieniają nazwę pliku lub po prostu ich zamawianie nie jest tym, czego chcemy. Jednak zmiana nazwy przed datą utworzenia zawsze działa:

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

Następnie umieszczamy tę listę w pliku:

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

A następnie użyj, mencoderaby utworzyć AVIwideo przy użyciu 20 klatek na sekundę. Pamiętaj, że wygeneruje to ogromny plik wideo, zwykle mniej więcej tego samego rozmiaru wszystkich zsumowanych zdjęć.

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

Zwykle robię zdjęcia w trybie poklatkowym z najniższą rozdzielczością mojego aparatu (5 MP), który ma współczynnik proporcji 4: 3. Aby wygenerować prawidłowe wideo 1080p, obraz jest najpierw ponownie skalowany do 1920 pikseli szerokości, a następnie przycinam go do 1080 wysokości. W ten sposób nie zmieniam zawartości zdjęć, po prostu kadruję:

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

Powodem, dla którego używam mencodera do łączenia zdjęć jest to, że dostałem segmentation faultffmpeg.

Frederico Schardong
źródło
W przypadku segfault przydałaby się znajomość twojej wersji ffmpeg.
Unapiedra
Jeśli tak jak ja, nagrałeś w formacie 3: 2 (moje zdjęcia D750 to 6016x4016) i potrzebujesz go w formacie 16: 9 (dla filmów 4k) 3840x2160, możesz użyć FFMPEG do Pillerboksa do wideo i podkładania czarnych linii tramwajowych po bokach za pomocą tego polecenia - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = spadek, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Wideo będzie większy, ale bez utraty jakości, ponieważ jest to zmniejszanie skali
Rob
w twoim ffmpegpoleceniu -sameqopcja jest teraz zastąpiona przez-qscale 0
transang
3

Blender to dobre rozwiązanie, jeśli masz do czynienia z timelapseem ruchu (hyperlapse) lub niestabilnym materiałem filmowym. Ma możliwości śledzenia ruchu, dzięki czemu możesz wybrać stały punkt do śledzenia przez cały czas. Możesz także rozwiązać problemy z rotacją.

Reed G. Law
źródło
0

Możesz użyć mencodera. Opcje są dość oczywiste:

  • wyświetl listę wszystkich plików obrazów.

Jeśli wszystkie znajdują się w katalogu bieżącym z uporządkowanymi nazwami, a chcesz mieć listę w pliku /tmp/files.txt:

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

  • Użyj mencodera z odpowiednią opcją.

Jeśli chcesz, aby plik wyjściowy miał postać /tmp/test.avi z prędkością 30 klatek na sekundę:

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

Manu H.
źródło
0

Kdenlive może również generować timelapsy za pomocą Add Slideshow Clipmenu, jak wyjaśniono w tym samouczku .

Zgodnie z tym samym miejscu , OpenShot posiada podobną funkcjonalność, ale nie polecam, bo to jest „zbyt buggy”. Mimo to, jeśli jest to preferowany edytor wideo, z przyjemnością dowiesz się, że możesz po prostu przeciągnąć i upuścić sekwencję poprawnie nazwanych plików (001.jpg do NNN.jpg) w oknie openshot, aby zaimportować je również jako timelapse.

anarcat
źródło
Ten przewodnik pochodzi z 2014 roku. OpenShot udowodnił wiele w ciągu ostatnich kilku lat, teraz jest o wiele bardziej niezawodny.
vclaw