ffmpeg sekwencja obrazów

2

Chcę zakodować sekwencję obrazów do pliku wideo, robiłem to w przeszłości za pomocą czegoś takiego:

ffmpeg -i %08d.jpg out.mp4

Ale najpierw musiałem zmienić nazwę plików, aby były w tym formacie% 08d.jpg. Chcę je po prostu zakodować i pozwolić, aby były uporządkowane alfabetycznie (lub cokolwiek innego) bez konieczności zmiany ich nazw, czy to możliwe? Próbowałem z użyciem * .jpg i ffmpeg po prostu zawiesiłem się i ostatecznie zawiesiłem.

wim
źródło
1
Domyślnie niemożliwe. *.jpgpo prostu rozwinie się do wszystkich nazw plików, zanim FFmpeg zobaczy nawet gwiazdkę. Dlaczego nie możesz po prostu zmienić nazwy plików, jeśli mogę zapytać? Lub skopiuj je gdzie indziej, a następnie zmień nazwę? Może możesz przesłać obrazy do FFmpeg podobnego do cat *.jpg | ffmpeg -f image2 -i pipe: -r 25 out.mp4?
slhck
Możesz to zrobić za pomocą Symbolicznych linków do swojej listy plików ... Spójrz na ten link, aby dać ci wyobrażenie: Sortuj obrazy według proporcji
Peter.O
Obecnie zmieniam tylko nazwy plików za pomocą małego skryptu python, ale to kludge i myślałem, że istnieje bardziej eleganckie rozwiązanie, o którym nie wiedziałem. Przyszło mi również do głowy z dowiązaniem symbolicznym, ale i tak praca jest tak samo ważna jak zmiana nazw plików. Spróbuję teraz fajki ...
wim
Próbowałeś już fajki?
Byłbym
Nie, to nie zadziałało. Ale czytając strony podręcznika man, aby dowiedzieć się, jak składnia działa, zobaczyłem coś innego, co rozwiązało problem. Wyślę to jako odpowiedź ..
wim

Odpowiedzi:

3

W rzeczywistości możliwe jest, aby ffmpeg obsługiwał glob za Ciebie. Użyj -pattern_typeopcji z image2demuxera i zawiń glob w pojedyncze cudzysłowy, aby zapobiec ekspansji:

ffmpeg -f image2 -pattern_type glob -i '*.jpg' out.mp4

W starszych wersjach FFmpeg można użyć %znaku, na przykład:

ffmpeg -i %*.jpg out.mp4

Powyższe uważa się jednak za przestarzałe.

wim
źródło
Czy nie wystarczy '*.jpg'(zwróć uwagę na apostrofy) równie dobrze działać i być bardziej zaznajomionym, ponieważ nie opiera się na składni specyficznej dla narzędzia?
CVn
nie, a to wcale nie działa. wyjaśniono dlaczego na stronach podręcznika.
wim
Pamiętaj, że używana składnia jest uznawana za przestarzałą i może zostać wkrótce usunięta. Dodałem nową składnię z najnowszej wersji instrukcji FFmpeg, ale zachowałem również starą wersję.
slhck
Błąd ffmpeg: Wybrano typ wzoru „glob”, ale globbing nie jest obsługiwany przez tę kompilację libavformat : „glob jest zdefiniowany w standardzie POSIX i domyślnie nie jest dostępny w systemie Windows”.
Franck Dernoncourt