Теорія
Відмінності у відео, мабуть, не помітні для нетренованого ока. 1080p відео все одно доведеться зменшити. Це не буде точно так само, оскільки стиснення та масштабування застосовуються в різному порядку.
Припустимо, що оригінальне відео було 1080p. У цьому випадку відео 720p спочатку масштабували, потім стискали. З іншого боку, кліп 1080p спочатку стискали на стороні сервера, а потім масштабували на вашій машині. Файл 1080p, очевидно, буде більшим. (інакше він запропонував би більшу роздільну здатність, але з нижчою якістю, зруйнуючи візуальний досвід і скасувавши точку використання вищої роздільної здатності 1 )
Стиснення втрат зазвичай спричиняє візуальні артефакти, які виглядають як квадратні блоки із помітними краями, коли відео призупинено, але вони не видно, коли ви відтворюєте його з нормальним кадром. Файл 1080p міститиме більше квадратних блоків (спричинених стисненням), ніж 720p відео, але ці блоки будуть приблизно однакового розміру в обох відео.
Здійснюючи просту математику, ми можемо підрахувати, що 1080p відео буде містити в 2,25 рази більше таких блоків, тож після його зменшення до 720p цих блоків буде в 2,25 рази менше, ніж у фактичному 720p відео. Чим менше цих блоків, тим краща якість кінцевого відео, тим 1080p відео буде виглядати краще, ніж 720p відео, навіть на екрані 720p. Змінено 1080p відео буде трохи чіткіше, ніж фактичний 720 кліп.
Все стає дещо складніше, якщо вихідний матеріал був більшим за 1080p. Кліп 1080p спочатку масштабується до 1080p і стискається перед його відтворенням, а потім ще раз масштабується під час відтворення. Кліп 720p масштабується лише один раз, а потім стискається. Проміжний етап масштабування, який присутній у відеозоні 1080p, зробить його якість трохи гіршим 2 . Стиснення зробить 720p ще гіршим, хоча 1080p виграє в будь-якому випадку.
І ще одне: стискається не лише відео, але й аудіо. Коли люди вирішують використовувати більш високий бітрейт 1 для стиснення відео, вони часто роблять те ж саме з аудіо. 1080p версія того ж відео може запропонувати кращу якість звуку, ніж 720p відео.
1 : Бітрейт - це фактор, який визначає, наскільки добре стиснене відео вартістю розміру файлу. Він задається вручну при стисненні відео. Він визначає, скільки місця на диску може бути використаний для кожного кадру (або одиниці часу) стисненого відео. Більш високий бітрейт = краща якість та більший файл. Використання одного і того ж бітрейта з тим же кадром буде створювати файли (приблизно) однакового розміру, незалежно від того, яка роздільна здатність відео, але чим більша роздільна здатність, тим менше дискового простору можна витратити на один піксель, тому збільшуючи роздільну здатність виходу, не збільшуючи бітрейт може зробити стиснене відео виглядати гірше, ніж це було б із меншою роздільною здатністю виходу.
2 : Спробуйте самостійно: відкрийте фотографію в будь-якому редакторі та масштабуйте її до трохи меншого розміру, а потім знову і знову зберігайте її як PNG. Потім знову відкрийте оригінальну фотографію та масштабуйте її до одного розміру за один крок. Друга спроба дасть кращі результати.
Тест
@Raestloz попросив фактичні відео для порівняння у своєму коментарі. Я не зміг знайти 1080p та 720p версії того ж відео для порівняння, тому я зробив його.
Я використовував нестиснуті кадри з фільму «Сон слона» ( http://www.elephantsdream.org/ ), який доступний у розділі CC-BY 2.5. Я завантажив кадри 1-6000 і перетворив їх у відео, використовуючи ffmpeg та наступний пакетний файл:
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 500k -an -s 1280x720 -f mp4 _720p_500k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 700k -an -s 1280x720 -f mp4 _720p_700k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 1125k -an -s 1280x720 -f mp4 _720p_1125k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 4000k -an -s 1280x720 -f mp4 _720p_4000k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 500k -an -f mp4 _1080p_500k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 700k -an -f mp4 _1080p_700k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 1125k -an -f mp4 _1080p_1125k.mp4
ffmpeg -i %%05d.png -c:v libx264 -framerate 24 -b:v 4000k -an -f mp4 _1080p_4000k.mp4
- 24 кадрів в секунду
- 1080p та 720p
- чотири постійних бітрейта для кожної роздільної здатності:
- 500 кбіт / с
- 700 кбіт / с
- 1125 кбіт / с
- 4000 кбіт / с
500 кбіт / с є достатньо низьким, щоб артефакти стиснення та спотворення з’являлися на відео 720p. 1125 кбіт / с - пропорційний бітрейт на піксель для 1080p (500 × 2,25 = 1125, де 2,25 = 1920 × 1080/1280 × 720). 700 кбіт / с є проміжним бітрейтом, щоб перевірити, чи не має сенсу використання бітрейта значно нижчий, ніж пропорційний для 1080p. 4000 кбіт / с достатньо високий, щоб створити відео без втрат в обох роздільних здатностях для порівняння розміру 1080p з фактичним 720p.
Потім я розділив відео назад на одиночні кадри. Витяг усіх кадрів відбувається повільно і займає багато місця ( правдива історія ), тому я рекомендую використовувати перемикач ffmpeg-r
для витягування кожного 8-го кадру (тобто -r 3
для відео в 24 кадрів в секунду)
Я не можу забезпечити захищені майбутніми посиланнями на завантаження відео, але ці кроки можна легко повторити для створення кліпів, таких як мій. Для запису тут розмір вихідного файлу: (повинен бути приблизно однаковим для обох роздільних можливостей, оскільки бітрейт постійний за секунду)
- 500 кбіт / с: 13,6 Мб / 13,7 Мб
- 700 кбіт / с: 18,8 Мб / 19 МБ
- 1125 кбіт / с: 29,8 Мб / 30,2 Мб
- 4000 кбіт / с: 105 Мб / 105 Мб
Завантаження для зразків витягнутих кадрів доступні в кінці цієї публікації.
Збільшення бітрейту та роздільної здатності
Ось порівняння тієї ж області, обрізаної з обох кадрів після масштабування до 720p (кадр 2097). Подивіться на пальці, голови та обладнання, що звисає зі стелі: навіть від 500 до 700 кбіт / с помітна різниця. Зверніть увагу, що обидва зображення вже масштабуються до 720p.
Рамка 3705. Помітьте край килимка та кабель:
Рамка 5697. Це приклад кадру, який стискається не дуже добре. Відео 1080p 700 kbps менш детальне, ніж кліп 720 500 kbps (край вуха). Деталі шкіри втрачаються на всіх стислих кадрах.
GIF-карти всіх трьох кадрів зі збільшенням бітрейта. (На жаль, мені довелося використовувати дитингування, оскільки GIMP не підтримує більше 255 кольорів у GIF, тому деякі пікселі трохи відключені.)
Постійний бітрейт, різні роздільні здатності
Натхненний коментарем @ TimS., Тут той же самий регіон від кадру 2097 з 720p та 1080p поряд.
Для 500 кбіт / с 720p трохи краще, ніж 1080p. 1080p виглядає чіткіше, але ці деталі насправді відсутні у нестисненому зображенні (штани лівого хлопця). З 700 кбіт / с я би назвав це нічиєю. Нарешті, 1080p виграє за 1125 кбіт / с: обидва фотографії виглядають здебільшого однаково, але зображення праворуч має більш виражені тіні (труби на задній стінці та в правій нижній частині).
Дуже високий бітрейт
@Noah задав гарне запитання в коментарях: чи будуть обидва зображення виглядати однаково з досить високим бітрейтом? Ось 720p 4000 kbps проти 1080p 4000 kbps проти нестисненого кадру 5697:
Зараз це досить суб’єктивно, але ось що я бачу:
- Лівий край вуха пікселізований у 720p, а гладкий у 1080p, незважаючи на однаковий бітрейт.
- 720p краще зберігає деталі шкіри щок, ніж 1080p.
- Волосся виглядають трохи гостріше в 1080p.
Тут масштабування починає грати роль. Можна інтуїтивно відповісти, що 1080p буде виглядати гірше, ніж 720p на екрані 720p, оскільки масштабування завжди впливає на якість. У цьому випадку це не зовсім так, тому що кодек, який я використовував (h.264, але й інші кодеки), має деякі недосконалості: він створює маленькі поля, які видно на контрастних краях. Вони також з’являються на знімку 1080p (див. Посилання внизу), але зміна 720p призводить до втрати деяких деталей, зокрема згладжує ці поля та покращує якість.
Гаразд, тож давайте обчислимо різницю між 720p (зліва) та 1080p (праворуч) проти оригінального кадру та розтягнемо контракт, так що це добре видно:
Цей образ дає нам ще чіткіше бачення того, що відбувається. Чорні пікселі ідеально представлені в стислих (і розмірах до 720p) кадрах, кольорові пікселі відключаються пропорційно інтенсивності.
- Щока наближається до оригіналу на 720p половині, оскільки масштабування розгладжує деталі шкіри на правій половині.
- Край вуха не так близький до нестиснених пікселів, але краще в 1080p. Знову артефакти видно на половині 720p - вони також з'являтимуться на нерозмірному 1080p, але масштабування їх згладжує з досить хорошими результатами.
- Волосся, здається, краще на 720p, оскільки вони закриті до чорного, але насправді це схоже на випадковий шум. 1080p, з іншого боку, має свої викривлення, що вишикуються на краях волосся, тому він фактично підкреслює лінії волосся. Це, мабуть, знову магія масштабування: "шум" збільшується при масштабуванні, але він також починає мати сенс.
Відмова від відповідальності
Цей тест є чисто синтетичним і не підтверджує, що 1080p відео в реальному житті виглядає краще 720p, коли відтворюється на меншому екрані. Однак він демонструє міцний зв’язок між бітрейтом відео та якістю відеоролика, зміненим до розміру екрана. Ми можемо з упевненістю припустити, що відео 1080p матиме більший бітрейт, ніж 720p, тому він пропонує більш детальні кадри, більшу частину часу покращуючи досвід глядача. Не найвищу роль грає не роздільна здатність, а бітрейт відео, який вище у 1080p відео.
Використання шалено високого бітрейту для 720p відео не дозволить виглядати краще 1080p. Зниження масштабу після стиснення може бути корисним для 1080p, оскільки воно формуватиме шум стиснення та згладжуватиме артефакти. Збільшення бітрейту не компенсує відсутність зайвих пікселів для роботи, оскільки втрачені кодеки не є ідеальними.
У рідкісних випадках (дуже деталізовані сцени) більш високої роздільної здатності відео з більшою швидкістю передачі насправді може виглядати гірше.
Яка різниця між цим штучним тестом і реальним відео?
- Я припустив, що принаймні на 40% більший бітрейт на 1080p, ніж для 720p. Дивлячись на результати, я думаю, 20% було б достатньо, щоб помітити поліпшення якості, але я не перевіряв цього. Пропорційне збільшення бітрейту забезпечить набагато кращі результати, навіть якщо нижча роздільна здатність відповідає тому, що використовує екран, але навряд чи його використовуватимуть у реальному житті. (все-таки пропорційно, @JamesRyan)
- У відеороликах із реального життя зазвичай використовується змінний бітрейт (VBR). Я поїхав з 1-прохідним постійним бітрейтом (CBR), сподіваючись, що це зробить усі неприємні побічні ефекти стиснення більш очевидними.
- Різні кодеки можуть реагувати по-різному. Цей тест проводився за допомогою популярного кодека h.264.
Ще раз: я не кажу, що цей пост нічого не підтверджує. Мій тест заснований на штучно зробленому відео. YMMV для реалістичних прикладів. Але теорія, ймовірно, правдива, немає нічого, що припускало б, що це може бути неправильно. (за винятком масштабування речі, але тест займається цим)
Підсумовуючи, у більшості випадків відео 1080p виглядатиме краще, ніж 720p відео, незалежно від того, яка роздільна здатність екрана .
Завантаження:
- Кадр 2097:
- Кадр 3705:
- Рамка 5697: