Zobacz Tworzenie pokazu slajdów wideo z obrazów - FFmpeg
Jeśli wideo nie wyświetla poprawnie klatek Jeśli napotkasz problemy, takie jak pominięcie pierwszego obrazu lub wyświetlenie go tylko dla jednej klatki, użyj filtru wideo fps zamiast -r dla wyjściowej szybkości klatek
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
Alternatywnie filtr wideo formatu można dodać do łańcucha filtrów, aby zastąpić -pix_fmt yuv420p, na przykład „fps = 25, format = yuv420p” . Zaletą tej metody jest to, że możesz kontrolować, który filtr jest używany jako pierwszy
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
Testowałem poniższe parametry, u mnie zadziałało
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
poniższe parametry również działały, ale zawsze pomija pierwszy obraz
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
tworzenie wideo z obrazów umieszczonych w różnych folderach
Najpierw dodaj ścieżki obrazów do imagepaths.txt, jak poniżej.
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
Przykładowe użycie w następujący sposób;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
Parametr -safe 0 zapobiega błędnej nazwie pliku
Powiązane linki
FFmpeg tworzy wideo z obrazów umieszczonych w różnych folderach
FFMPEG Pośredni przewodnik / sekwencja obrazów
Concatenate - FFmpeg
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
wydawało się działać, ale ostatecznie spowodowało, że wideo było nieczytelne dla żadnego gracza (na Ubuntu). VNC powiedział: „Nie znaleziono atomu moov”. Próba naprawienia tego problemuqt-faststart
spowodowała błąd „ostatni atom w pliku nie był atomem-pattern_type glob
Ta świetna opcja w wielu przypadkach ułatwia wybieranie obrazów.
Pokaz slajdów wideo z jednym obrazem na sekundę
Dodaj do tego trochę muzyki, odetnij, gdy przypuszczalnie dłuższy dźwięk, gdy kończą się obrazy:
Oto dwie wersje demonstracyjne w YouTube:
Bądź hipisem i używaj nieobciążonego patentem formatu wideo Theora :
Twoje obrazy powinny być oczywiście posortowane alfabetycznie, zazwyczaj jako:
i tak dalej.
Chciałbym również najpierw upewnić się, że wszystkie używane obrazy mają ten sam współczynnik proporcji, być może wcześniej przycinając je za pomocą
imagemagick
lub nomacs , aby ffmpeg nie musiał podejmować trudnych decyzji. W szczególności szerokość musi być podzielna przez 2, w przeciwnym razie konwersja nie powiedzie się z: „szerokość niepodzielna przez 2”.Wideo z normalną prędkością z jednym obrazem na klatkę przy 30 FPS
Oto jak to wygląda:
GIF wygenerowany za pomocą: /ubuntu/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Dodaj do niego trochę dźwięku:
Wynik: https://www.youtube.com/watch?v=HG7c7lldhM4
Oto media testowe, których użyłem: a
Obrazy generowane za pomocą: Jak używać GLUT / OpenGL do renderowania do pliku?
Fajnie jest obserwować, jak bardzo wideo kompresuje sekwencję obrazów znacznie lepiej niż ZIP, ponieważ jest w stanie kompresować między klatkami za pomocą wyspecjalizowanych algorytmów:
opengl-rotating-triangle.mp4
: 340 tysopengl-rotating-triangle.zip
: 7,3 mlnKonwertuj jeden plik muzyczny na wideo ze stałym obrazem do przesłania do YouTube
Odpowiedział na: /superuser/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572
Pełna realistyczna konfiguracja studium przypadku pokazu slajdów krok po kroku
Tworzenie pokazów slajdów to trochę więcej niż uruchamianie pojedynczego polecenia ffmpeg, więc oto bardziej interesujący, szczegółowy przykład inspirowany tą osią czasu .
Pobierz nośnik wejściowy:
Teraz przyjrzymy się wszystkim rozmiarom obrazu, aby zdecydować o ostatecznym współczynniku proporcji:
które wyjścia:
więc klasyczny współczynnik proporcji 480p (640x480 == 4/3) wydaje się odpowiedni.
Wykonaj jedną konwersję z minimalną zmianą rozmiaru, aby uzyskać równe szerokości (TODO automatyzuje dowolną szerokość, tutaj po prostu ręcznie spojrzałem na
identify
wynik i zmniejszono szerokość i wysokość o jeden):Daje to okropną wydajność, ponieważ jak widać z:
ffmpeg po prostu przyjmuje rozmiar pierwszego obrazu, 556x494, a następnie konwertuje wszystkie pozostałe do tego dokładnego rozmiaru, łamiąc ich proporcje.
Teraz automatycznie przekonwertujmy obrazy na docelowy współczynnik proporcji 480p, przycinając zgodnie z ImageMagick: jak minimalnie przyciąć obraz do określonego współczynnika proporcji?
Więc teraz współczynnik proporcji jest dobry, ale nieuchronnie trzeba było wykonać pewne kadrowanie, które wycina interesujące części obrazów.
Inną opcją jest wypełnienie czarnym tłem, aby uzyskać ten sam współczynnik proporcji, jak pokazano na: Zmień rozmiar, aby zmieścić się w ramce i ustawić tło na czarne w „pustej” części
Ogólnie rzecz biorąc, najlepiej byłoby wybrać obrazy o takich samych lub podobnych proporcjach, aby uniknąć tych problemów w pierwszej kolejności.
Informacje o opcjach CLI
Zauważ jednak, że pomimo nazwy,
-glob
nie jest to tak ogólne, jak wzorce powłoki Glob, np:-i '*'
nie powiodło się: https://trac.ffmpeg.org/ticket/3620 (najwyraźniej dlatego, że typ pliku jest wywnioskowany z rozszerzenia).-r 30
sprawia, że-framerate 1
wideo ma 30 klatek na sekundę, aby przezwyciężyć błędy w odtwarzaczach, takich jak VLC, przy niskiej liczbie klatek na sekundę: VLC zawiesza się przy niskim 1 kl./s wideo utworzonym z obrazów za pomocą ffmpeg Dlatego powtarza każdą klatkę 30 razy, aby zachować pożądany efekt 1 obrazu na sekundę.Następne kroki
Będziesz także chciał:
odetnij część dźwięku, którą chcesz, przed dołączeniem do niego: Przycinanie filmów na podstawie czasu rozpoczęcia i zakończenia za pomocą ffmpeg
DO ZROBIENIA: naucz się wycinać i łączyć wiele plików audio w wideo bez plików pośrednich, jestem prawie pewien, że jest to możliwe:
Testowany
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Bibliografia
źródło
'
w nazwach plików wejściowych i wyjściowych. W przeciwnym razie nie znajdzie plików.ffmpeg-static
nie implementuje glob. (Pattern type 'glob' was selected but globbing is not supported by this libavformat build
)-pix_fmt
spowodowałTrailing options were found on the commandline.
błądffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
na Ubuntun 19.10 ffmpeg 4.1.4 właśnie teraz, jaka jest twoja wersja i dokładne polecenie?Prosta wersja z Dokumentów
Działa szczególnie dobrze w przypadku obrazów Google Earth Studio :
źródło
%3d
lub%03d
?cat *.png | ffmpeg -f image2pipe -i - output.mp4
z wiki
źródło