Порівняйте два відеофайли, щоб з’ясувати, яка найкраща якість


30

Припустимо, у мене той самий відеоматеріал, закодований у двох (або більше) файлах. Я хотів би запустити на них якусь утиліту, яка ґрунтовно зазначила, який файл "найкращий" за якістю. "З повагою" означає, що я хотів би отримати звіт, який порівнює різні аспекти (наприклад, роздільна здатність відео, бітрейт відео, частота дискретизації аудіо, бітрейт аудіо тощо, тощо), а потім якийсь інтегральний бал, який припадає на всі їх.

Це стосується функціональності, але щоб ця утиліта була фактично корисною, вона повинна бути з відкритим кодом та командним рядком.


Щоб почати збирати деяку пов’язану інформацію (насправді не рішення за критеріями, наведеними вище), є repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Ось "як про" речі: стиснення .ru / video / quality_measure /… . Але це не з відкритим кодом, і порівнює "оригінал" і "копію", а не лише 2 об'єктивні файли.
pfalcon

Пов'язані питання: stackoverflow.com/questions/3518417 / ...
pfalcon

Відповіді:


88

Я працюю в дослідженнях якості відео, і важко дати просту відповідь на ваше запитання. Те, що ви хочете, це програма, яка дає вам середній показник думки (MOS) відео, тобто число від 1 до 5, або між 0 і 100, що відповідає якості, сприйнятому людиною.

Чому ви не можете просто порівняти бітрейт / роздільну здатність / тощо.

Просто порівняння роздільної здатності відео нічого не скаже про якість. Насправді це може бути абсолютно оманливим. Копіяція фільмів 1080p при розмірі 700 МБ може виглядати гірше, ніж копія 720 пікселів на 700 МБ, тому що для першої бітрейт занадто низький, що вводить усі види артефактів стиснення.

Те ж саме стосується порівняння бітрейта при подібних розмірах кадру, оскільки різні кодери дійсно можуть забезпечити кращу якість при меншому бітрейті або навпаки. Наприклад, копія 720p 700 Мб, вироблена за допомогою XviD, буде виглядати гірше, ніж копія 700 МБ, вироблена з x264, оскільки останній набагато ефективніший.

Вам також слід визначити, як підсумковий "інтегральний бал" (MOS) складається з окремих факторів якості. Це значною мірою залежить від кількох речей, включаючи, але не обмежуючись ними:

  • тип відео, яке ви порівнюєте (мультфільми, фільми, новини тощо)
  • їх довжина
  • їх глядацька аудиторія
  • їх оригінальний розмір кадру
  • їх первісна "якість" до того, як вони були закодовані

Ми навіть не говоримо про те, як люди сприйматимуть відео. Припустимо, у вас є друг, який переглядає фільми, оскільки він або вона насолоджуються чіткими деталями та високою роздільною здатністю руху. Вони виявляться набагато критичнішими, коли бачите копію низької якості, ніж товариш, який просто переглядає фільми за їх вмістом . Вони, напевно, так не піклуються про якість, доки фільм смішний чи розважальний.

Існують різні типи показників якості відео!

Дозвольте навести перелік того, що, на мою думку, сьогодні найчастіше використовується для базової оцінки якості відео. Існує кілька показників якості відео, які можна класифікувати за типом інформації, яка використовується для визначення якості. В принципі і дуже просто кажучи, ви розрізняєте наступне:

  • Безреференсні показники - у них є лише одне відео як вхідний і вихідний показник якості. У вашому випадку ви шукаєте безвідмовний показник , оскільки у вас часто навіть немає оригінального відео. Такий показник займе одне відео та виведе один показник якості. Ось кілька прикладів проблем, які виявить метрика NR (наприклад, розмиття).

  • Повна довідкова метрика - Вони мають два входи, один - вихідне вхідне відео, а другий - закодоване відео. Наприклад, ви можете зняти фільм на DVD, потім створити з нього два кадри та скористатися повноцінним показником для оцінки втрат якості між оригінальним фільмом DVD (тобто відео MPEG-2 на диску) та вашими копіями. Вирахування знадобиться багато часу, але це більш точно.

Вищенаведені показники розглядають якість кодування відео, але є й такі показники, які містять такі проблеми, як початковий час завантаження та затримка подій під час трансляції відео (наприклад, МСЕ-T P.1203 ).

Яке програмне забезпечення я можу використовувати?

Ось перелік готових до використання інструментів, які можна використовувати для тестування деяких показників (деякі призначені лише для Windows):

Тепер які показники існують?

PSNR, PSNR-HVS і PSNR-HVS-M

Для початку PSNR ( пікове співвідношення сигнал-шум) - дуже простий у використанні, але дещо поганий метод оцінки якості відео. Він працює відносно добре, хоча для більшості застосувань, але не дає хорошої оцінки того, як люди сприймуть якість.

PSNR можна обчислити кадр за кадром, і тоді ви, наприклад, в середньому отримаєте PSNR цілої послідовності відео, щоб отримати остаточну оцінку. Чим вищий ПСНР, тим краще.

PSNR-HVS та PSNR-HVS-M - це розширення PSNR, які намагаються наслідувати зорове сприйняття людини, тому вони повинні бути більш точними. VQMT і MSU можуть обчислювати PSNR, PSNR-HVS і PSNR-HVS-M між двома відео.

SSIM, MS-SSIM

Структурну схожість (SSIM) так само легко обчислити, як і PSNR, і вона дає більш точні результати, але все ж на основі кадрів. Ви знайдете деякі реалізації за посиланням Wikipedia або ви можете використовувати VQMT або MSU . Ці інструменти також включають MS-SSIM, який дає кращі (тобто більш репрезентативні) результати, ніж SSIM, а також кілька інших похідних.

Результати повинні бути аналогічні PSNR. Знову ж таки, вам потрібно порівняти посилання на оброблене відео, щоб це працювало, і обидва відео повинні бути однакового розміру.

VMAF

Video Multi-Method Assessment Fusion від Netflix - це набір інструментів для обчислення якості відео на основі деяких існуючих показників, які потім методами машинного навчання зливаються в кінцевий бал від 0 до 100. Netflix пояснив усе це тут :

[VMAF] прогнозує суб'єктивну якість, поєднуючи декілька елементарних показників якості. Основне обґрунтування полягає в тому, що кожна елементарна метрика може мати свої сильні та слабкі сторони щодо характеристик вмісту джерела, типу артефактів та ступеня спотворень. Шляхом "злиття" елементарних показників у кінцеву метрику з використанням алгоритму машинного навчання - у нашому випадку регресора регрессора "Vector Vector Machine" (SVM) - який призначає ваги кожній елементарній метриці, остаточний показник може зберегти всі сильні сторони окремих показників , і поставити більш точний підсумковий результат.

Ви також можете використовувати ffmpegдля підрахунку балів VMAF .

VQM

Показник якості відео був затверджений в групі експертів з якості відео (VQEG) і є дуже хорошим алгоритмом повного посилання. Ви можете завантажити VQM безкоштовно або скористатися реалізацією з MSU.

Під час реєстрації та завантаження потрібно використовувати загальну модель NTIA або модель якості відео із затримкою змінної кадру .

Інші показники

  • PEVQ - це стандартизований показник повного відліку за МСЕ-T J.246. Він спрямований на мультимедійні сигнали, але не HD-відео.
  • VQuad-HD - ще одна повна еталонна метрика, стандартизована як ITU-T J.341. Оскільки він новіший, він краще підходить для HD-відео.

Обидва вони є комерційними рішеннями, і ви не знайдете програмне забезпечення для їх завантаження.

Існують також деякі стандарти МСЕ щодо нереференційних показників, такі як ITU-T P.1201 та ITU-T P.1202 , які працюють з параметрами бітового потоку для потокової передачі IPTV. МСЕ-T P.1203 може використовуватися для адаптивних потокових справ.


Підсумок

Якщо ви просто прагнете порівняти прості об'єктивно вимірювані критерії, такі як:

  • Розмір кадру
  • Швидкість передачі
  • Кадри в секунду
  • Роздільна здатність відео

… Простий дзвінок, який ffmpeg -iповинен вам дати всі необхідні деталі на початку. Також подивіться на -vstatsваріант. Потім ви можете узагальнити це в електронній таблиці. Зауважте, що коли ви кодуєте відео, x264наприклад, ви записуватимете такі речі, як PSNR, прямо у файл, якщо вам потрібно, тож ви зможете використовувати ці значення пізніше.

Щодо зважування цих критеріїв, ви, ймовірно, слід підкреслити швидкість передачі бітів, але тільки якщо ви знаєте, що кодек той самий. Ви, як правило, можете сказати, що коли обидва відео використовують x264, краще той, що має більший бітрейт. Навіть більш загально, ви повинні вибрати нижчу роздільну здатність, коли у вас є два відео з однаковим бітрейтом, оскільки деградація внаслідок збільшення масштабу не така вже й погана, як деградація через низький бітрейт.

Порівнювати різні кодеки за їх швидкістю передачі даних неможливо, якщо ви не знаєте більше про вміст та окремі налаштування кодування. Частота кадрів теж дуже суб'єктивна річ, і її слід враховувати у ваших вимірах, якщо вона значно нижче 25 Гц.

Підводячи підсумок, сильно підкресліть бітрейт, якщо це єдине, що у вас є. Не забудьте також використати очі :)


Перш за все, як оригінальний автор запитання, мені шкода, що раніше не коментував. Пост справді приголомшливий і добре оцінений. На жаль, я не можу прийняти це як відповідь на своє первісне запитання. Причина полягає в тому, що я навмисно розмістив питання тут, а не на StackOverflow, тому що хотів запропонувати існуючий, готовий до використання інструмент. Будь питання про те, як написати такий інструмент, ваша відповідь буде абсолютним переможцем. Але вибачте, я не можу написати все необхідне з нуля, тому дозвольте користувачеві в мені задавати питання та очікувати відповідей (можливо, не вчора чи сьогодні, можливо, у майбутньому ;-)
pfalcon

1
Чудова, інформативна відповідь. Незважаючи на те, що це не пряма відповідь, мені подобається бачити, як люди витрачають свій час на написання такого інформаційного матеріалу. +1
SuperDuck

1

Я не знаю жодного інструменту, який дасть вам остаточну рекомендацію або бал, але, використовуючи FFmpeg , ви можете вивести всі деталі, які ви вказали у питанні.

У командному рядку ffmpeg -i відобразить інформацію з відео. Звідти ви можете написати скрипт, щоб проаналізувати інформацію та зважити її, як вважаєте за потрібне.


Дякую, так, саме цим я займався пару годин, перш ніж вирішити запитати, чи існує якийсь кращий "магічний" інструмент ;-)
pfalcon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.