теория
Различия в видео, вероятно, не будут заметны для нетренированных глаз. Видео 1080p в любом случае придется уменьшить. Это не будет точно так же, потому что сжатие и масштабирование применяются в другом порядке.
Давайте предположим, что оригинальное видео было 1080p. В этом случае видео 720p сначала масштабировалось, а затем сжималось. С другой стороны, клип 1080p сначала был сжат на стороне сервера, а затем масштабирован на вашем компьютере. Файл 1080p, очевидно, будет больше. (в противном случае он будет предлагать более высокое разрешение, но с более низким качеством, разрушая визуальное восприятие и лишая смысла использование более высокого разрешения 1)
Сжатие с потерями обычно вызывает визуальные артефакты, которые появляются в виде квадратных блоков с заметными краями, когда видео останавливается, но не видны при воспроизведении с нормальной частотой кадров. Файл 1080p будет содержать больше квадратных блоков (вызванных сжатием), чем видео 720p, но эти блоки будут иметь примерно одинаковый размер в обоих видео.
Используя простую математику, мы можем рассчитать, что видео 1080p будет содержать в 2,25 раза больше таких блоков, поэтому после уменьшения до 720p эти блоки будут в 2,25 раза меньше, чем в реальном видео 720p. Чем меньше эти блоки, тем лучше качество конечного видео, поэтому видео 1080p будет выглядеть лучше, чем видео 720p, даже на экране 720p. Видео с разрешением 1080p будет немного резче, чем фактический клип в формате 720p.
Все становится немного сложнее, если исходный материал был больше, чем 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.
Затем я разделил видео на отдельные кадры. Извлечение всех кадров происходит медленно и занимает много места (правдивая история), поэтому я рекомендую использовать -r
ffmpeg для извлечения каждого 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 кбит / с менее детализировано, чем клип 720 500 кбит / с (край уха). Детали скина теряются на всех сжатых кадрах.
GIF-файлы всех трех кадров, с увеличением битрейта. (К сожалению, мне пришлось использовать дизеринг, потому что GIMP не поддерживает более 255 цветов в GIF, поэтому некоторые пиксели немного отключены.)
Постоянный битрейт, разные разрешения
Вдохновленный комментариями @ TimS., Здесь та же область, что и в кадре 2097, с 720p и 1080p рядом.
Для 500 кбит / с 720p немного лучше, чем 1080p. 1080p выглядит четче, но эти детали на самом деле отсутствуют в несжатом изображении (брюки левого парня). С 700 кбит / с я бы назвал это ничьей. Наконец, 1080p выигрывает для 1125 кбит / с: оба кадра выглядят в основном одинаково, но на изображении справа видны более выраженные тени (трубы на задней стенке и в нижней правой части).
Очень высокий битрейт
@Noah задал хороший вопрос в комментариях: оба изображения будут выглядеть одинаково с достаточно высоким битрейтом? Вот 720p 4000 кбит / с против 1080p 4000 кбит / с против несжатого кадра 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: