Załóżmy, że mam ten sam materiał wideo zakodowany w dwóch (lub więcej) plikach. Chciałbym uruchomić na nich jakieś narzędzie, które gruntownie wskazało, który plik jest „najlepszej” jakości. „Uziemienie” oznacza, że chciałbym otrzymywać raport, który porównuje różne aspekty (np. Rozdzielczość wideo, szybkość transmisji wideo, częstotliwość próbkowania audio, szybkość transmisji audio itp. Itp.) Jeden po drugim, a następnie jakiś integralny wynik, który odpowiada za wszystkie z nich.
Chodzi o funkcjonalność, ale aby narzędzie to było faktycznie użyteczne, powinno być typu open source i wiersza poleceń.
video
comparison
avi
pfalcon
źródło
źródło
Odpowiedzi:
Pracuję w badaniach jakości wideo i trudno jest udzielić prostej odpowiedzi na twoje pytanie. To, czego chcesz, to program, który daje średni wynik opinii (MOS) filmu, tj. Liczbę od 1 do 5 lub od 0 do 100, co odpowiada jakości postrzeganej przez człowieka.
Dlaczego nie można po prostu porównać szybkości transmisji / rozdzielczości / itp.
Samo porównanie rozdzielczości wideo nie powie nic o jakości. W rzeczywistości może to być całkowicie mylące. Zgrywanie filmu 1080p przy rozmiarze 700 MB może wyglądać gorzej niż zgrywanie 720p przy 700 MB, ponieważ w tym pierwszym przypadku szybkość transmisji jest zbyt niska, co wprowadza wszelkiego rodzaju artefakty kompresji.
To samo dotyczy porównywania przepływności przy podobnych rozmiarach klatek, ponieważ różne kodery mogą faktycznie zapewniać lepszą jakość przy mniejszej przepływności lub odwrotnie. Na przykład rip 720p 700 MB wyprodukowany przy użyciu XviD będzie wyglądał gorzej niż rip 700 MB wykonany przy użyciu x264, ponieważ ten ostatni jest znacznie bardziej wydajny.
Trzeba również zdefiniować, w jaki sposób końcowy „wynik całkowity” (MOS) składa się z indywidualnych czynników jakości. Zależy to w dużej mierze od kilku rzeczy, w tym między innymi:
Nie mówimy nawet o tym, jak ludzie postrzegaliby filmy. Załóżmy, że masz przyjaciela, który ogląda filmy, ponieważ lubi ostre szczegóły i wysoką rozdzielczość ruchu. Byliby o wiele bardziej krytyczni, gdy widzą zgrane niskiej jakości niż znajomy, który właśnie ogląda filmy z ich treściami . Prawdopodobnie nie dbaliby o jakość tak długo, jak długo film jest zabawny lub zabawny.
Istnieją różne rodzaje wskaźników jakości wideo!
Pozwól, że dam ci listę tego, o czym myślę, że jest dziś najczęściej używany do podstawowej oceny jakości wideo. Istnieje kilka wskaźników jakości wideo, które można sklasyfikować według rodzaju informacji wykorzystywanych do określania jakości. Zasadniczo i bardzo prosto rozróżnia się następujące elementy:
Wskaźniki braku odniesienia - mają tylko jeden film wejściowy i wyjściowy wynik jakości. W twoim przypadku szukasz metryki bez odniesienia , ponieważ często nie masz nawet oryginalnego filmu. Taki pomiar zajmie jeden film i wygeneruje jeden wynik jakości. Oto kilka przykładów problemów wykrytych przez wskaźnik NR (np. Rozmycie).
Metryki z pełnym odniesieniem - mają dwa wejścia, jedno z nich to oryginalne wideo wejściowe, a drugie to zakodowane wideo. Na przykład możesz wziąć film DVD, a następnie utworzyć z niego dwa zgrania i użyć pełnego odniesienia, aby oszacować utratę jakości między oryginalnym filmem DVD (tj. Wideo MPEG-2 na płycie) a zgarnięciem. Obliczenie zajmie dużo czasu, ale jest dokładniejsze.
Powyższe wskaźniki dotyczą jakości kodowania wideo, ale istnieją również wskaźniki uwzględniające problemy, takie jak początkowe czasy ładowania i zdarzenia przeciągnięcia podczas przesyłania strumieniowego wideo (np. ITU-T P.1203 ).
Z jakiego oprogramowania mogę korzystać?
Oto lista gotowych do użycia narzędzi, których można użyć do przetestowania niektórych wskaźników (niektóre dotyczą tylko systemu Windows):
Jakie są dostępne dane?
PSNR, PSNR-HVS i PSNR-HVS-M
Na początek PSNR (szczytowy stosunek sygnału do szumu) jest bardzo prostą w użyciu, ale nieco słabą metodą oceny jakości wideo. Działa stosunkowo dobrze dla większości aplikacji, ale nie daje dobrego oszacowania tego, jak ludzie postrzegaliby jakość.
PSNR można obliczyć klatka po klatce, a następnie na przykład uśrednisz PSNR całej sekwencji wideo, aby uzyskać końcowy wynik. Wyższy PSNR jest lepszy.
PSNR-HVS i PSNR-HVS-M to rozszerzenia PSNR, które próbują naśladować ludzką percepcję wzrokową, więc powinny być bardziej dokładne. VQMT i MSU mogą obliczyć PSNR, PSNR-HVS i PSNR-HVS-M między dwoma filmami.
SSIM, MS-SSIM
Strukturalne podobieństwo (SSIM) jest równie łatwe do obliczenia jak PSNR i zapewnia dokładniejsze wyniki, ale nadal klatka po klatce. Niektóre implementacje znajdziesz pod linkiem do Wikipedii lub możesz użyć VQMT lub MSU . Narzędzia te obejmują również MS-SSIM, który daje lepsze (tj. Bardziej reprezentatywne) wyniki niż SSIM, a także kilka innych pochodnych.
Wyniki powinny być podobne do PSNR. Ponownie musisz porównać odniesienie do przetworzonego wideo, aby to zadziałało, a oba filmy powinny mieć ten sam rozmiar.
VMAF
Ocena wielu metod wideo Fusion firmy Netflix to zestaw narzędzi do obliczania jakości wideo na podstawie niektórych istniejących wskaźników, które są następnie łączone metodami uczenia maszynowego w końcowy wynik od 0 do 100. Netflix wyjaśnił tutaj :
Możesz także użyć
ffmpeg
do obliczenia wyników VMAF .VQM
Jakość wideo Metric został zatwierdzony w jakości wideo Experts Group (VQEG) i jest to bardzo dobry algorytm pełne odniesienie. Możesz pobrać VQM za darmo lub skorzystać z implementacji z MSU.
Podczas rejestracji i pobierania chcesz użyć modelu ogólnego NTIA lub modelu jakości wideo ze zmiennym opóźnieniem klatek .
Inne dane
Oba są rozwiązaniami komercyjnymi i nie znajdziesz dla nich oprogramowania do pobrania.
Istnieją również niektóre standardy ITU dotyczące wskaźników bez odniesienia, takie jak ITU-T P.1201 i ITU-T P.1202 , które działają z parametrami ze strumienia bitów dla strumieniowania IPTV. ITU-T P.1203 może być stosowany do adaptacyjnych przypadków przesyłania strumieniowego.
Podsumowanie
Jeśli chcesz po prostu porównać proste obiektywnie mierzalne kryteria, takie jak:
… Proste wezwanie
ffmpeg -i
powinno dostarczyć ci wszystkich szczegółów, których potrzebujesz na początku. Zobacz także-vstats
opcję. Następnie możesz podsumować to w arkuszu kalkulacyjnym. Zauważ, że kiedy kodujesz filmy,x264
na przykład loguje rzeczy takie jak PSNR bezpośrednio do pliku, jeśli zajdzie taka potrzeba, więc możesz użyć tych wartości później.Jeśli chodzi o ważenie tych kryteriów, prawdopodobnie powinieneś podkreślić szybkość transmisji - ale tylko wtedy, gdy wiesz, że kodek jest taki sam. Ogólnie można powiedzieć, że gdy oba filmy używają x264, ten o wyższej przepływności jest lepszy. Nawet bardziej ogólnie, powinieneś wybrać niższą rozdzielczość, jeśli masz dwa filmy z tym samym bitrate, ponieważ degradacja spowodowana zwiększeniem skali nie jest tak poważna jak degradacja z powodu niskiej bitrate.
Porównywanie różnych kodeków według ich przepływności nie jest możliwe, chyba że wiesz więcej na temat zawartości i indywidualnych ustawień kodowania. Liczba klatek na sekundę jest również bardzo subiektywna i powinna zostać uwzględniona w pomiarach, jeśli jest znacznie poniżej 25 Hz.
Podsumowując, mocno podkreśl bitrate, jeśli jest to jedyna rzecz, którą masz. Nie zapomnij też użyć oczu :)
źródło
Nie znam żadnego narzędzia, które da ci ostateczną rekomendację lub wynik, ale za pomocą FFmpeg możesz wypisać wszystkie szczegóły wymienione w pytaniu.
W wierszu polecenia ffmpeg -i wyświetli informacje z filmu. Następnie możesz napisać skrypt analizujący informacje i ważący je według własnego uznania.
źródło