Porównaj dwa pliki wideo, aby dowiedzieć się, która ma najlepszą jakość

30

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ń.

pfalcon
źródło
Aby rozpocząć zbieranie niektórych powiązanych informacji (nie jest to rozwiązanie według powyższych kryteriów), istnieje repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Oto „jak profesjonalista”: kompresja .ru / video / quality_measure /… . Ale nie jest to oprogramowanie typu open source i porównuje „oryginalne” i „kopiowanie”, a nie tylko 2 obiektywne pliki.
pfalcon
Powiązane pytanie: stackoverflow.com/questions/3518417/…
pfalcon

Odpowiedzi:

88

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:

  • rodzaj porównywanych filmów (bajki, filmy, wiadomości itp.)
  • ich długość
  • ich publiczność
  • ich oryginalny rozmiar ramki
  • ich oryginalna „jakość” przed ich zakodowaniem

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 :

[VMAF] przewiduje jakość subiektywną, łącząc wiele elementarnych wskaźników jakości. Podstawowym uzasadnieniem jest to, że każda podstawowa metryka może mieć swoje mocne i słabe strony w odniesieniu do charakterystyki zawartości źródła, rodzaju artefaktów i stopnia zniekształcenia. Poprzez „stopienie” elementarnych metryk w metrykę końcową za pomocą algorytmu uczenia maszynowego - w naszym przypadku regresora Support Vector Machine (SVM) - który przypisuje wagi do każdej metryki elementarnej, metryka końcowa może zachować wszystkie mocne strony poszczególnych metryk i zapewnić dokładniejszy wynik końcowy.

Możesz także użyć ffmpegdo 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

  • PEVQ jest znormalizowanym pełnym wskaźnikiem odniesienia według ITU-T J.246. Ma na celu sygnały multimedialne, ale nie wideo HD.
  • VQuad-HD to kolejna pełna referencyjna metryka znormalizowana jako ITU-T J.341. Ponieważ jest nowszy, lepiej nadaje się do wideo HD.

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:

  • Rozmiar ramki
  • Szybkość transmisji
  • Klatki na sekundę
  • Rozdzielczość wideo

… Proste wezwanie ffmpeg -ipowinno dostarczyć ci wszystkich szczegółów, których potrzebujesz na początku. Zobacz także -vstatsopcję. Następnie możesz podsumować to w arkuszu kalkulacyjnym. Zauważ, że kiedy kodujesz filmy, x264na 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 :)

slhck
źródło
Po pierwsze, jako oryginalny autor pytania, przepraszam, że wcześniej nie komentowałem. Post jest naprawdę niesamowity i doceniony. Niestety nie mogę zaakceptować tego jako odpowiedzi na moje pierwotne pytanie. Powód jest taki: Celowo zamieściłem pytanie tutaj, a nie na StackOverflow, ponieważ chciałem zasugerować istniejące, gotowe do użycia narzędzie. Niezależnie od tego, jak napisać takie narzędzie, Twoja odpowiedź byłaby absolutnym zwycięzcą. Ale przepraszam, nie mogę napisać wszystkiego, czego potrzebuję od zera, więc pozwól użytkownikowi zadawać pytania i oczekiwać odpowiedzi (może nie wczoraj lub dziś, może w przyszłości ;-)
pfalcon
1
Świetna, pouczająca odpowiedź. Chociaż nie jest to bezpośrednia odpowiedź, lubię widzieć, jak ludzie poświęcają czas na pisanie takich materiałów informacyjnych. +1
SuperDuck
1

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.

jhulst
źródło
Dzięki, yep, że to, co robię na kilka godzin przed podjęciem decyzji, aby zapytać, czy jakiś lepszy, narzędzie „magia” istnieje ;-)
pfalcon