Obrazy FFMPEG do samouczka wideo

Ffmpeg Images Video Tutorial



Więc jesteś zainteresowany budowaniem wideo na podstawie obrazów? Oprogramowanie dla systemu Linux może również pomóc w tym zadaniu, a zwłaszcza w jednym: ffmpeg.

Jeśli jeszcze tego nie wiesz, ffmpeg to oprogramowanie, które wykonuje konwersję i edycję wideo i audio za pomocą filtrów. To ten, który obsługuje największą liczbę różnych kodeków. Jeśli już używałeś VLC, to wiesz trochę ffmpeg: VLC używa ffmpeg do dekodowania jak największej liczby filmów.







Ale zanim zaczniesz robić filmy, muszę opowiedzieć ci kilka koncepcji, abyś nie zgubił się w drodze.



Nie jest trudno zintegrować obrazy w filmie. I jest powód: filmy są oparte na serii obrazów. Pozwól mi wyjaśnić.



Wideo (nawet wideo z YouTube) to zestaw nieruchomych obrazów, które szybko się zmieniają. W kinie i kinach pomiędzy każdym obrazem jest czarny obraz, ponieważ mechanizm musi przełączać klatki i działał zbyt wolno. Ale nie jest to zauważalne dla ludzkiego oka, ponieważ mechanizm jest wystarczająco szybki i z powodu złudzenia optycznego.





Ale komputery nie mają tego problemu. Ekrany LCD wyświetlają tylko ostatni obraz. W każdym razie możesz wyodrębnić niezależny obraz z każdego obrazu wideo. Kiedy obraz pochodzi z filmu, nazywa się to rama . To jest dokładnie to, co widzisz, gdy zatrzymujesz wideo – a kiedy to robisz, twarze generalnie nie wyglądają dobrze!

Ogólnie rzecz biorąc, filmy ze Stanów Zjednoczonych zawierają 30 klatek na sekundę - uświadomić sobie trochę. To 1800 klatek na minutę, 54 000 klatek na pół godziny wideo lub 108 000 klatek na godzinę . To dużo i dlatego czasami zastanawiasz się, jak pojedynczy obraz może ważyć 1 MiB, a jedna minuta wideo 1080p może ważyć tylko 15 MiB.



Liczba zdjęć na sekundę to częstotliwość wyświetlania klatek . Przy 30 klatkach na sekundę zmieniasz obraz co 33 milisekundy . A więc konkretnie, jeśli chcesz zrobić minutę filmu opartego wyłącznie na twoich obrazach, musiałbyś mieć 1800 plików JPG lub PNG na minutę.

Jest to przydatne, jeśli chcesz przeprowadzić zaawansowaną edycję wideo bez użycia narzędzi wideo: wystarczy zbudować obrazy dla każdej klatki ze swoimi efektami, a następnie możesz je połączyć w wideo. Ale czasami chcesz, aby nieruchomy obraz trwał, ponieważ, cóż, chcesz mieć nieruchomy obraz w filmie.

Dobra, teraz czas na zainstalowanie ffmpeg.

Zainstaluj ffmpeg w systemie Linux

W zależności od twojej dystrybucji, instalacja ffmpeg może być łatwa lub trochę zdradliwy . Jest to darmowe oprogramowanie z publicznie dostępnym kodem źródłowym, ale ponieważ może dekodować lub kodować opatentowane formaty, takie jak MP4, niektóre dystrybucje wykluczają go ze swoich repozytoriów. Na przykład w Red Hat Enterprise Linux, CentOS i Fedorze potrzebujesz RPMFusion z powodu patentów. Co więcej, wszystkie wersje Debiana i Ubuntu przed 16.04 rozpowszechniają fałszywą wersję ffmpeg opartą na nielegalnym widelcu.

Ale zanim spieszymy się z instalacją, może odpowiednia wersja jest już zainstalowana? Przetestujmy:

$ffmpeg -wersja
ffmpegwersja X.XXXXXXXX Prawa autorskie(C) 2000-2018programiści FFmpeg

Jeśli po prawach autorskich widzisz twórców FFmpeg, masz oryginalną wersję FFMpeg, nie musisz nic robić. Jeśli jednak zobaczysz:

$ffmpeg -wersja
ffmpegwersja X.XXXXXXXX Prawa autorskie(C) 2000-2018programiści Libav

Oznacza to, że używasz widelec ffmpeg o nazwie Libav. Debian i starsze wersje Ubuntu bezgłośnie zastąpić FFMpeg z Libav. Jeśli powie Ci, że jest przestarzały, zignoruj ​​to, to jest mylące. Jeśli masz zainstalowany widelec, nadszedł czas, aby usunąć swoją wersję fałszywego ffmpeg, a następnie postępuj zgodnie z poniższym przewodnikiem, aby zainstalować odpowiednią wersję. Prawdopodobnie tak:

$sudo apt-get usuń ffmpeg

Więc teraz możesz go jeszcze nie zainstalować lub masz niewłaściwą wersję, czas ją zainstalować!

W Fedorze, Red Hat Enterprise Linux (RHEL) i CentOS przejdź do https://rpmfusion.org/Konfiguracja i włącz bezpłatne repozytorium RPMFusion na swoim komputerze. Następnie, jeśli jesteś w Fedorze, wykonaj:

$sudodnfzainstalować ffmpeg

W przypadku CentOS i Red Hat Enterprise Linux wykonaj następujące czynności:

$sudo mniam instalacja ffmpeg

To wszystko dla systemów opartych na Fedorze i Red Hat, jest zainstalowany.

We wszystkich wersjach Debiana (i wszystkich pochodnych) i Ubuntu przed 16.04, musisz pobrać statyczną kompilację FFMpeg z oficjalnej strony internetowej. Iść do https://ffmpeg.org/download.html#build-linux i poniżej Statyczne kompilacje Linuksa , Kliknij 32-bitowe i 64-bitowe dla jądra 2.6.32 i nowszych . Następnie poniżej wydanie: XX.X. , pobierz odpowiednie archiwum, rozpakuj je i możesz uruchomić pliki wykonywalne znajdujące się w wyodrębnionym folderze za pomocą CLI.

Dla tych, którzy używają Ubuntu 16.04 i nowszych, jest to łatwiejsze, po prostu wykonaj:

$sudo apt-get install ffmpeg

Uff! Wreszcie powinniśmy być gotowi! Zanim przejdziesz dalej, przetestuj ostatni raz z:

$ffmpeg -wersja

ffmpeg wersja X.XXXXXXXX Prawa autorskie (c) 2000-2018 twórcy FFmpeg

Twórz filmy z wielu obrazów

Tak więc w naszym pierwszym przykładzie utworzymy wideo z obrazów, w których każdy obraz reprezentuje klatkę, która będzie wyświetlana przez 33 milisekundy. Pokażę ci najpierw polecenie.

** MP4 i H.264 to kodeki opatentowane, sprawdź, czy masz prawo do ich kodowania. **

$ffmpeg-r: v30 -i 'Pingwiny - %05d.png'-kodek: v libx264-presetbardzo wolno
-pix_fmt yuv420p-crf 28 -jakiś 'Pingwiny.mp4'

OK, więc jak to działa? Aby to polecenie zadziałało, musisz mieć wiele ramek, z których każda jest plikiem takim jak Penguins – 00043.png. To polecenie połączy następnie wszystkie klatki w kolejności z szybkością 30 FPS. Tak więc Penguins – 00043.png pojawia się przed Penguins – 00044.png w filmie, a ffmpeg to uszanuje. Więc jeśli masz 120 klatek, Twój film będzie trwał 4 sekundy.

Aby ramki działały, istnieje kilka wymagań dotyczących formatu, szerokości i wysokości. Jeśli nie przestrzegasz tych zasad, ffmpeg może zignorować niektóre obrazy lub anulować proces tworzenia wideo. Więc:

  • Wszystkie klatki w tym samym filmie muszą udostępniać:
    • Szerokość wysokość
    • Głębia koloru
  • Klatki powinny mieć standardowy rozmiar wideo, taki jak:
    • 640 × 360 (360p)
    • 853 ✕ 480 (480p)
    • 1280 ✕ 720 (720p)
    • 1920 × 1080 (1080p)
    • 4096 ✕ 2306 (4K)
  • Preferuj ramki w formacie PNG zamiast JPG
  • Unikaj przezroczystości lub alfa w formacie PNG

Polecenie zajmie trochę czasu, aby przekonwertować wideo, zoptymalizować jego wydajność i utworzyć plik MP4 o nazwie Penguins.mp4.

Teraz możesz chcieć mieć nieruchomy obraz pozostający przez ponad 33 milisekundy. W tym przypadku Twój film jest bardziej pokazem slajdów i nie jest to ta sama sprawa. Aby to zrobić, możesz najpierw podać wolniejszą liczbę klatek na sekundę dla wejścia, a następnie powiedzieć ffmpeg, aby zduplikował klatki na wyjściu. Nie, YouTube i Vimeo nie docenią wideo 0,5 FPS, nawet jeśli zmieniasz obraz co 2 sekundy.

Zróbmy raczej tak:

$ffmpeg-r: v1/5 -i 'Pingwiny - %05d.png'-r: v30-kodek: v libx264-presetbardzo wolno
-pix_fmt yuv420p-crf 28 -jakiś 'Pingwiny.mp4'

No to jedziemy! ffmpeg sprawi, że każdy z twoich obrazów będzie wyświetlany przez 5 sekund, ale w filmie 30 FPS. Nie przejmuj się ostrzeżeniem o zduplikowanych ramkach: tego chcesz.

Wniosek

Teraz jesteś - nowy Spielberg – możliwość tworzenia własnych filmów. Możesz zrobić prosty pokaz slajdów lub przygotować wideo klatka po klatce za pomocą edytora obrazów, takiego jak GIMP, ale możesz również skorzystać z dużego zestawu efektów i kodeków, które można znaleźć w ffmpeg.

Poświęć czas na samodzielne eksperymentowanie – w końcu jesteś artystą – i stwórz film, który zrobi miliony wyświetleń w YouTube!