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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.