Pracując w systemie Linux z nagraniami wideo, często potrzebujemy szybko sprawdzić ich podstawowe parametry t.j.: rozdzielczość, długość nagrania, liczbę klatek na sekundę, kodek, bitrate czy informacje o ścieżce audio.
W środowisku graficznym można oczywiście otworzyć plik w odtwarzaczu lub menedżerze plików i podejrzeć właściwości. Linux daje nam jednak znacznie wygodniejszą możliwość – sprawdzenie parametrów bezpośrednio z terminala.
Jeżeli znasz program identify z ImageMagick, który pozwala szybko podejrzeć informacje o plikach graficznych, możesz szukać jego odpowiednika dla materiałów wideo. Nie ma jednego programu będącego dokładnym odpowiednikiem identify, ale świetnie sprawdzają się tutaj przede wszystkim mediainfo oraz ffprobe.

Dlaczego warto sprawdzać parametry wideo z terminala?
Informacje widoczne na pierwszy rzut oka – na przykład „film Full HD” – nie zawsze mówią nam wszystkiego.
Dwa pliki mogą mieć rozdzielczość 1920×1080, ale różnić się między sobą:
- kodekiem,
- profilem kodeka,
- bitrate’em,
- liczbą klatek na sekundę,
- sposobem kodowania klatek,
- długością nagrania,
- formatem kontenera,
- parametrami dźwięku,
- stałą lub zmienną liczbą klatek na sekundę.
Ma to znaczenie szczególnie wtedy, gdy przygotowujemy materiał do montażu, publikacji w Internecie, archiwizacji albo konwersji do innego formatu.
Terminal pozwala również łatwo sprawdzić wiele plików jednocześnie i wykorzystać uzyskane informacje w skryptach Bash.
mediainfo – najprostszy sposób na sprawdzenie pliku
Jeżeli zależy nam przede wszystkim na czytelnym raporcie dla człowieka, bardzo dobrym wyborem jest mediainfo.
W Debianie lub Ubuntu program zainstalujemy poleceniem:
sudo apt install mediainfo
W dystrybucjach korzystających z DNF możemy użyć:
sudo dnf install mediainfo
Po instalacji wystarczy podać nazwę pliku:
mediainfo video.mp4
Program wyświetli informacje dotyczące kontenera, obrazu oraz dźwięku.
Przykładowo możemy zobaczyć między innymi:
General
Complete name : video.mp4
Format : MPEG-4
Duration : 00:05:32
Overall bit rate : 8.5 Mb/s
Video
Format : AVC
Format profile : High@L4.1
Width : 1920 pixels
Height : 1080 pixels
Frame rate : 30.000 FPS
Bit rate : 8.0 Mb/s
Audio
Format : AAC
Channel(s) : 2 channels
Sampling rate : 48.0 kHz
Dokładny zestaw informacji zależy oczywiście od pliku.
Szybkie sprawdzenie najważniejszych parametrów
mediainfo pozwala również przygotować własny format wyjścia.
Przykładowo:
mediainfo --Inform="Video;%Width%x%Height% pixels, %FrameRate% fps" video.mp4
może zwrócić:
1920x1080 pixels, 30.000 fps
To bardzo wygodne rozwiązanie, jeżeli chcemy szybko sprawdzić konkretny parametr bez przeglądania całego raportu.
ffprobe – potężne narzędzie z pakietu FFmpeg
Drugim programem, który zdecydowanie warto znać, jest ffprobe.
Jest on częścią projektu FFmpeg, dlatego jeżeli mamy już zainstalowany FFmpeg, istnieje duża szansa, że ffprobe również jest dostępny w systemie.
W Debianie i Ubuntu możemy zainstalować go za pomocą:
sudo apt install ffmpeg
Podstawowe użycie jest bardzo proste:
ffprobe video.mp4
Jeżeli jednak interesuje nas przede wszystkim czytelny wynik, warto ograniczyć ilość komunikatów:
ffprobe -v error -show_format -show_streams video.mp4
ffprobe jest szczególnie interesujący wtedy, gdy chcemy wyciągać konkretne informacje automatycznie.
Jak sprawdzić rozdzielczość nagrania?
To jedno z najczęściej wykonywanych zadań.
Polecenie:
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=width,height \
-of csv=s=x:p=0 \
video.mp4
zwróci na przykład:
1920x1080
Dzięki temu możemy bardzo szybko sprawdzić, czy nagranie jest Full HD, 4K czy ma jeszcze inną rozdzielczość.
Możemy wykorzystać to również w skryptach.
Jak sprawdzić liczbę klatek na sekundę?Parametr FPS ma ogromne znaczenie podczas montażu i konwersji materiału.
Za pomocą ffprobe możemy sprawdzić podstawową wartość:
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=r_frame_rate \
-of default=noprint_wrappers=1:nokey=1 \
video.mp4
Wynik może wyglądać na przykład tak:
30000/1001
Nie oznacza to błędu. Jest to sposób reprezentacji wartości około 29,97 kl./s.
Warto pamiętać, że w przypadku niektórych nagrań samo r_frame_rate nie musi odpowiadać rzeczywistej częstotliwości prezentowania klatek. Szczególną uwagę trzeba zachować przy materiałach ze zmienną liczbą klatek na sekundę (VFR).
CBR, VBR i bitrate – co właściwie sprawdzamy?
Bitrate określa ilość danych wykorzystywanych do zapisania materiału w jednostce czasu.
Możemy go sprawdzić za pomocą:
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=bit_rate \
-of default=noprint_wrappers=1:nokey=1 \
video.mp4
Nie zawsze otrzymamy jednak wartość. Niektóre formaty i sposoby kodowania nie przechowują tej informacji w sposób, który pozwala ffprobe jednoznacznie ją odczytać.
Warto też odróżnić bitrate całego pliku od bitrate samej ścieżki wideo. Plik może zawierać przecież zarówno obraz, jak i dźwięk oraz dodatkowe strumienie.
Jak sprawdzić kodek?
Jeżeli chcemy wiedzieć, czy materiał wykorzystuje H.264, H.265/HEVC, AV1, VP9 czy inny kodek, możemy użyć:
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 \
video.mp4
Przykładowy wynik:
h264
Podobnie możemy sprawdzić kodek audio:
ffprobe -v error \
-select_streams a:0 \
-show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 \
video.mp4
Przykładowo:
aac
JSON – idealne rozwiązanie do skryptów
Jedną z największych zalet ffprobe jest możliwość generowania wyników w formacie JSON.
Na przykład:
ffprobe -v error \
-print_format json \
-show_format \
-show_streams \
video.mp4
Otrzymamy dane, które można następnie przetwarzać za pomocą programów i skryptów.
To świetne rozwiązanie, jeżeli budujemy własne narzędzie do katalogowania nagrań.
Możemy na przykład stworzyć skrypt, który dla każdego pliku w katalogu sprawdzi:
- rozdzielczość,
- FPS,
- kodek,
- długość,
- bitrate,
- ścieżkę audio.
Następnie wyniki możemy zapisać do CSV, JSON albo bazy danych.
exiftool – kiedy interesują nas metadane
Trzecim narzędziem wartym uwagi jest exiftool.
Jest ono szczególnie popularne w przypadku fotografii, ale potrafi odczytywać również wiele informacji z plików wideo.
W Debianie i Ubuntu instalacja wygląda następująco:
sudo apt install libimage-exiftool-perl
Następnie:
exiftool video.mp4
Program może wyświetlić między innymi informacje o dacie utworzenia pliku, urządzeniu, którym wykonano nagranie, ustawieniach kamery czy innych dostępnych metadanych.
Trzeba jednak pamiętać, że zakres dostępnych informacji zależy od konkretnego pliku i urządzenia, które go utworzyło.
Nie każdy film będzie zawierał dane GPS, informacje o kamerze czy datę nagrania.
mediainfo czy ffprobe?
Oba programy są bardzo dobre, ale mają nieco inne zastosowania.
mediainfo
Wybierzmy je, gdy chcemy:
- szybko obejrzeć informacje o pliku,
- otrzymać czytelny raport,
- ręcznie sprawdzić parametry nagrania,
- nie pisać skryptów.
Przykład:
mediainfo film.mp4
ffprobe
Lepiej sprawdzi się, gdy:
- pracujemy z FFmpeg,
- potrzebujemy bardzo szczegółowych informacji,
- chcemy wyciągnąć jeden konkretny parametr,
- automatyzujemy analizę plików,
- potrzebujemy JSON-a,
- przetwarzamy dużą liczbę nagrań.
Przykład:
ffprobe -v error -print_format json -show_streams film.mp4
exiftool
Warto sięgnąć po niego przede wszystkim wtedy, gdy interesują nas metadane i informacje zapisane w pliku, a nie tylko parametry strumienia wideo.
A co z ImageMagick identify?
Jeżeli korzystasz z ImageMagick, prawdopodobnie znasz:
identify obraz.jpg
Polecenie potrafi błyskawicznie podać podstawowe informacje o obrazie.
W przypadku wideo sytuacja jest trochę inna. ImageMagick nie jest narzędziem przeznaczonym przede wszystkim do analizy strumieni wideo.
Dlatego zamiast szukać jednego programu będącego dokładnym odpowiednikiem:
identify
warto zapamiętać dwa polecenia:
mediainfo film.mp4
oraz:
ffprobe film.mp4
W praktyce są one znacznie bardziej użyteczne do analizy materiałów wideo.
Przydatny zestaw poleceń
Jeżeli często pracujesz z nagraniami, warto zapamiętać kilka prostych komend.
Wszystkie podstawowe informacje
mediainfo film.mp4
Rozdzielczość
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height \
-of csv=s=x:p=0 film.mp4
Kodek wideo
ffprobe -v error -select_streams v:0 \
-show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 film.mp4
Kodek audio
ffprobe -v error -select_streams a:0 \
-show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 film.mp4
Wszystkie strumienie w JSON
ffprobe -v error -print_format json \
-show_streams film.mp4
Metadane
exiftool film.mp4
Sprawdzanie wielu nagrań
Terminal pokazuje swoją prawdziwą siłę, gdy mamy więcej niż jeden plik.
Przykładowo:
for file in *.mp4; do
echo "=== $file ==="
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=width,height \
-of csv=s=x:p=0 \
"$file"
done
Możemy w ten sposób błyskawicznie przejrzeć rozdzielczości wszystkich plików MP4 znajdujących się w katalogu.
Jeszcze ciekawsze możliwości pojawiają się wtedy, gdy połączymy ffprobe z narzędziami takimi jak awk, sed, grep, jq czy Python.
Dlaczego warto znać te narzędzia?
mediainfo, ffprobe i exiftool pokazują jedną z największych zalet Linuksa – możliwość wykonywania skomplikowanych operacji za pomocą prostych narzędzi w terminalu.
Nie musimy otwierać odtwarzacza, programu do montażu ani specjalistycznego analizatora wideo tylko po to, żeby odpowiedzieć sobie na pytanie:
„W jakiej rozdzielczości jest ten film i ile ma FPS?”
Wystarczy:
ffprobe ...
Jeżeli natomiast chcemy otrzymać pełny i czytelny raport:
mediainfo film.mp4
A gdy interesują nas dodatkowe metadane:
exiftool film.mp4
Podsumowanie
Jeżeli szukasz linuksowego odpowiednika identify do sprawdzania nagrań wideo, najlepiej zacząć od mediainfo. Jest proste, czytelne i dostarcza ogromnej ilości informacji.
Do bardziej zaawansowanych zastosowań zdecydowanie warto poznać ffprobe, szczególnie jeśli korzystasz z FFmpeg lub chcesz automatyzować analizę dużej liczby plików.
Z kolei exiftool jest świetnym uzupełnieniem, gdy oprócz parametrów technicznych interesują nas także metadane.
W praktyce warto mieć w systemie wszystkie trzy narzędzia – każde z nich rozwiązuje nieco inny problem.
Minimalny zestaw do zapamiętania:
mediainfo film.mp4
ffprobe -v error -show_streams film.mp4
exiftool film.mp4
To niewielki zestaw poleceń, który potrafi dostarczyć bardzo dużo informacji o dowolnym nagraniu.