FFmpeg – narzędzie o ogromnych możliwościach

ffmpeg FFmpeg to wieloplatformowy projekt, mający na celu dostarczenie kompletnej platformy do nagrywania, konwertowania oraz przesyłania strumieni audio i video. Obsługuje on bardzo wiele kodeków i kontenerów multimedialnych. FFmpeg jest wiodącym frameworkiem multimedialnym, ma możliwość dekodowania, kodowania, transkodowania, multipleksowania, demultipleksowania, strumieniowania, filtrowania i odtwarzania prawie wszystkiego, co ludzie i maszyny stworzyli. Obsługuje formaty od tych najbardziej „starożytnych” i mało znanych aż do najnowocześniejszych.

FFmpeg dostarcza m.in kilka narzędzi:

  • ffmpeg – program służący do konwertowania plików multimedialnych z jednego formatu na inny oraz podstawowej obróbki,
  • ffserver – serwer do przesyłania strumieni audio i wideo na żywo,
  • ffplay – prosty odtwarzacz oparty na SDL i bibliotekach FFmpeg,
  • ffprobe – prosty analizer plików / strumieni multimedialnych.

Możliwości programu ffmpeg są bardzo duże.

Przykładowe zastosowania programu ffmpeg

Bezstratna zmiana kontenera multimedialnego, bez zmiany użytych kodeków

ffmpeg -i plik_we.mts -acodec copy -vcodec copy plik_wy.mp4

Po parametrze -i podajemy ścieżkę do pliku wejściowego. Parametry -acodec i -vcodec określają użyte kodeki audio i wideo — w tym przykładzie to skopiowane strumieni bez zmiany kodeka.

Bezstratne uzyskanie wycinka filmu

ffmpeg -i plik_we.avi -acodec copy -vcodec copy -ss 15 -t 00:10:10 plik_wy.avi

W podanym przykładzie uzyskamy wycinek o długości 10 min 10 sekund, zaczynający się od 15 sekundy oryginalnego filmu. Czas można podawać jako liczbę sekund, albo w formacie gg:mm:ss[.xxx] gdzie xxx to tysięczne sekundy i ich podane jest nieobowiązkowe.

Stworzenie filmu z pliku audio i obrazka

ffmpeg -r 1 -loop 1 -i grafika.png -i muzyka.acc -acodec copy \ 
-vcodec libx264 -shortest -crf 18 -tune stillimage plik_wy.mp4

Obraz będzie powtarzany w pętli (-loop 1) z częstotliwością 1 klatkę na sekundę (-r 1). Strumień audio zostanie przekopiowany z pliku muzycznego bez straty jakości. Obraz zostanie zakodowany przy pomocy kodera H.264/MPEG-4 AVC, a konkretnie przy użyciu kodeka x264. Film będzie miał długość taką jaką ma plik muzyczny (-shortest). W kodeku x264 zostanie zastosowana optymalizacja dla obrazów nieruchomych (-tune stillimage). Możliwe wartości parametru -tune to:

  • film  – przeznaczona dla filmów o wysokiej przepływności oraz jakości
  • animation  – przeznaczona dla kreskówek
  • grain – optymalizacja do materiałów, które są już „ziarniste”. Przy jej zastosowaniu ziarno nie zostanie odfiltrowane tak bardzo.
  • stillimage  – przeznacona dla nieruchomych obrazów
  • psnr – tryb debugowania z optymalizacją tylko na dobrą wartość szczytowego stosuneku sygnału do szumu (PSNR, ang. peak signal-to-noise ratio)
  • ssim – tryb debugowania z optymalizacją tylko na dobrą wartość SSIM (ang. structural similarity)
  • fastdecode  – optymalizacja dla szybkiego dekodowania na urządzeniach o niskiej mocy obliczeniowej
  • zerolatency – optymalizacja dla szybkiego kodowania i strumieniowania z niskimi opóźnieniami

Parametr -crf określa żądaną jakość strumienia wideo. Parametr ten może przyjmować wartości całkowite nieujemne. Rozsądny zakres tego parametru to 18-28. Znaczenie jego wartości można opisać następująco:

  • 0 – kodowanie bezstratne
  • 18 – kodowanie wizualnie bezstratne
  • 23 – wartość domyślna

Zmiana Constant Rate Factor o 6 powoduje zmianę przepływności strumienia wideo o połowę.

Dwie ścieżki dźwiękowe w jednym pliku

Załóżmy, że mamy dwa pliki z filmem, każdy plik z inną ścieżka dźwiękową (np. z dubbingiem i z lektorem). Możemy z tych dwóch plików stworzyć jeden, zawierający dwie ścieżki dźwiękowe i strumień wideo.

ffmpeg -i film_oryg.mp4 -i film_lektor.mp4 -acodec copy -vcodec copy -map 0:v:0 -map 1:a:0 -map 0:a:0 film_lektor+oryg.mp4

Stworzony w ten sposób plik będzie zawierał pierwszy strumień wideo z pierwszego pliku (-map 0:v:0), pierwszy strumień audio z drugiego pliku (-map 1:a:0), pierwszy strumień audio z pierwszego pliku (-map 0:a:0). Czyli domyślną ścieżka dźwiękową będzie ta z pliku film_lektor.mp4. Zarówno dźwięk jak i obraz zostaną skopiowane bez utraty jakości.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

To prevent spam, URLs are not allowed in comments. All comments are moderated and subject to approval.
Aby zapobiec spamowi, adresy URL nie są dozwolone w komentarzach. Wszystkie komentarze są moderowane i podlegają zatwierdzeniu.