# Почему одно и то же видео в mpv и IINA темнее, чем в QuickTime

> Откройте один файл на Mac в QuickTime и в плеере на mpv рядом, и в mpv картинка окажется темнее, а тени — тяжелее. Ни один плеер не сломан. Они читают одно и то же видео с двумя разными тональными кривыми — мы измерили обе, и вот в чём разница, на чьей стороне стандарт и как получить другой вариант.

Источник: https://frameplayer.app/ru/guides/darker-than-quicktime
Обновлено: 2026-09-27

Откройте один и тот же фильм на Mac в QuickTime и в IINA, mpv или Frame Player,
и плееры на mpv покажут его темнее: лица в полутёмной комнате теряют объём,
ночная сцена превращается в чёрное поле с огоньками. Обычно это объясняют тем,
что mpv «давит тени» или что в файле нет информации о цвете и mpv угадывает
неправильно. Мы это измерили, и ни то ни другое не совсем верно.

## В чём на самом деле разница

Для теста взяли один кадр видео H.264 с шестнадцатью серыми полосами известной
яркости, воспроизвели его в QuickTime и во Frame Player на одном и том же
дисплее MacBook Pro, захватили оба окна и прочитали попиксельно. Числа — то, что
каждый плеер отправил на экран, из 255:

| Яркость в файле (16 — чёрный, 235 — белый) | QuickTime | Кривая mpv | Разница |
|---|---|---|---|
| 20 | 3,7 | 4,3 | +0,6 |
| 28 | 11,0 | 13,6 | +2,6 |
| 40 | 29,7 | 27,6 | −2,1 |
| 64 | 63,3 | 55,5 | −7,8 |
| 96 | 102,3 | 91,6 | −10,7 |
| 128 (средне-серый) | 140,0 | 128,7 | −11,3 |
| 160 | 176,7 | 167,1 | −9,6 |
| 224 | 242,7 | 240,6 | −2,1 |

Бросаются в глаза две вещи. Самые тёмные ступени в mpv вовсе не темнее — они на
уровень-другой светлее. Темнее mpv рисует **нижние полутона**, причём до 12
уровней. Именно там живёт бо́льшая часть полутёмной сцены, поэтому это и
воспринимается как потеря деталей в тенях.

На настоящих кадрах разрыв той же формы: на ярком кадре из мультфильма средняя
яркость всей картинки в QuickTime — 177,5, а с кривой mpv — 170,9, а пикселей в
тенях самого файла — 54,6 против 47,9, примерно на восьмую часть темнее.

Сами цвета одинаковые. Чистый красный вышел как 232, 51, 35 в QuickTime и 231,
50, 34 во Frame Player. Это тональная кривая, а не сдвиг цвета.

> **Примечание.** **IINA рисовала одну из двух картинок.** Часто она совпадала с настройками Frame Player по умолчанию в пределах половины уровня на каждой полосе. При других открытиях файла того же рода она рисовала ещё темнее: средне-серый на 122, а ступень, которую QuickTime показывает на 11, — на 3. Вот это уже действительно тени, уходящие в черноту. Что её переключает, мы не нашли, так что если IINA кажется вам темнее, чем описано здесь, возможно, вы видите это второе состояние.

## Почему: два способа прочитать BT.709

Почти всё SDR-видео — фильмы, сериалы, YouTube — это BT.709. Стандарт говорит,
как картинка *кодируется*; как экран должен превратить её обратно в свет —
отдельный стандарт, BT.1886, и он описывает кривую около 2,4 для затемнённой
комнаты, той, в которой работает колорист.

- **mpv** передаёт экрану значения видео без изменений. Дисплей Mac затем читает
  их своей кривой, близкой к 2,2, — чуть светлее, чем эталонные 2,4, но из того
  же семейства.
- **QuickTime** декодирует BT.709 кривой около **1,96**, а затем кодирует
  результат для дисплея. На средне-сером это 140 вместо 129. Это давний выбор
  Apple, который видеомонтажёры обсуждают как «QuickTime gamma shift», и он
  хорошо сходится с нашими измерениями: модель предсказывает 63,6 на полосе 64 и
  141 на средне-сером; QuickTime показал 63,3 и 140.

Так что по стандарту ближе более тёмная картинка mpv. А по привычке на Mac
знакомее более светлая картинка QuickTime: её показывает системный плеер — и,
судя по сообщениям, с которых начался этот тест, другие плееры на видеофреймворке
Apple тоже, — и видео, смонтированное и проверенное на Mac, часто утверждали
именно в таком виде. Ошибки нет ни в одном, и ни один не прав
всегда.

## «В файле нет информации о цвете»

Многие такие жалобы касаются MKV-файлов, в которых `ffprobe` не показывает ни
`color_space`, ни `color_range`, поэтому естественно заподозрить, что плеер
плохо угадывает. Мы убрали из тестового видео все цветовые метки, а потом сделали
копию, правильно помеченную как BT.709. Оба плеера нарисовали помеченную и
непомеченную копии **одинаково**, полоса в полосу. Для HD-видео без меток mpv
предполагает BT.709, и QuickTime тоже; дальше каждый рисует BT.709 по-своему.
Метки в ваших файлах не изменят картинку ни в одном из них.

## Что измеряет тест на цветных полосах

Ещё один способ сравнивать эти плееры — цветные полосы SMPTE: сгенерировать их в
BT.709, считать каждую полосу с экрана «Цифровым колориметром» в режиме «Display
in sRGB» и усреднить, насколько она отклоняется от «теоретического» значения. Мы
провели и этот тест, и оказалось, что прежде чем измерить цвет, он измеряет две
другие вещи.

**Во-первых, диапазон.** Полосы хранятся как видео *ограниченного диапазона*, где
чёрный — это код 16, а полоса 75 % — 180. Плеер должен растянуть это до 0–255
экрана: (180 − 16) × 255 / 219 = 191, а 16 становится 0. Если «теоретическими»
значениями взять 180 и 16 — числа из файла, — то каждый плеер, правильно
декодирующий файл, теряет по 11 уровней в каждом полном канале и по 16 в каждом
пустом, а тот, что растяжение пропускает, выглядит почти идеальным. Мы проверили
это на двух файлах, одинаковых в каждом пикселе, один с меткой ограниченного
диапазона, другой — полного: один и тот же плеер на одних и тех же пикселях
получил 12,9 по эталону 180/16, когда декодировал правильно, и 1,9, когда ему
велели не растягивать. По правильному эталону 191/0 всё наоборот: 0,5 и 11,4.
Рейтинг по эталону 180/16 сортирует плееры по тому, расширяют ли они диапазон.

**Во-вторых, кривая.** По правильным значениям Frame Player с настройками по
умолчанию отклонился в среднем на 0,3 уровня, QuickTime — на 3,3, а наша
настройка «Как в системе» — на 3,6, ровно потому, что она совпадает с QuickTime.
Это соглашение mpv оценивает само себя: правильно расширенные значения,
отправленные на экран без собственной кривой, — это и есть то, что делает mpv.
Оценка говорит, какому соглашению следует плеер, а не насколько он точен.

И большую часть разницы тест прячет. Семь из 27 участков — чистый чёрный или
полный белый, где все кривые совпадают; большинство остальных — цвета 75 %,
у верхнего края кривой; полутонов среди них только два. Между QuickTime и mpv
полосы в среднем отличаются на 3,4 уровня, а обычная серая шкала показывает 8,3
в полутонах — больше чем вдвое, и в той части картинки, где на самом деле живёт
полутёмная сцена. Если хотите увидеть эту разницу, смотрите на серые, а не на
цветные полосы.

> **Примечание.** **Если делаете полосы сами, сначала проверьте их.** FFmpeg помечает свой вывод `smptehdbars` как BT.601, поэтому добавление `-colorspace bt709` в команду незаметно пересчитывает полосы и меняет их цвета (красный 75 % выходит на 174 вместо 191). Вместо этого помечайте кадры с помощью `-vf setparams=colorspace=bt709:…`. И если сравниваете свои числа с нашими: наши захваты окон расходились с «Цифровым колориметром» в режиме «Display in sRGB» не больше чем на один уровень на том же кадре.

## Рецепт, который ходит по форумам, и почему у нас он не сработал

Исправление, которое обычно советуют для IINA, — три настройки mpv:

```
gamma-factor=1.1218765935747068
vf=format=gamma=gamma2.2
icc-profile-auto=yes
```

Главные здесь первые две: они велят mpv считать видео обычной кривой 2,2, а
затем изгибают её на 2,2 / 1,961 — те самые 1,96 Apple. Во Frame Player
тональная кривая с ними вышла правильной. Но третья, ICC-профиль дисплея,
сделала все цвета бледнее: чистый красный ушёл с 232, 51, 35 на 213, 68, 49,
зелёный — с 117, 251, 76 на 152, 244, 103. Цветом картинки управляли дважды:
один раз mpv под дисплей и ещё раз macOS, которая и так сама переводит
видеослой Frame Player под экран.

Без строки ICC одна только кривая слишком высветлила самые глубокие тени
(полоса 28 на 18,7 вместо 11,0 у QuickTime), потому что mpv тогда кодирует под
чистый дисплей 2,2, а у кривой дисплея Mac возле чёрного есть прямой участок.
В итоге совпадение дала четвёртая настройка, которая заставляет mpv
использовать эту настоящую кривую:

```
target-trc=srgb
treat-srgb-as-power22=no
```

Вместе с фильтром формата и гамма-коэффициентом это воспроизвело QuickTime с
точностью до половины уровня начиная с полосы 32 и до двух единиц на каждом
цвете.

> **Примечание.** **Это настройки, которые совпали во Frame Player.** От того, как плеер передаёт картинку macOS, зависит, нужен ли в рецепте ICC, а окна IINA и самого mpv с этими настройками мы не измеряли. Если пробуете их в другом плеере, сравните с QuickTime, прежде чем оставлять, — и применяйте их только к SDR-файлам: фильтр формата неправильно пометил бы HDR-видео.

## Как с этим обходится Frame Player

По умолчанию Frame Player оставляет кривую mpv, а кривую QuickTime предлагает на
выбор: **Параметры › Видео › Цвет SDR-видео › Как в системе**.

- **Это та самая комбинация, измеренная выше**, без ICC, поэтому цвета остаются
  ровно такими же, а меняется только тональная кривая.
- **Картинка меняется сразу**, даже на кадре на паузе, — переключайте туда и
  обратно, чтобы понять, что вам больше нравится.
- **Затрагивается только SDR-видео.** HDR-файлы сохраняют собственный
  тонмаппинг, а изображения остаются как есть. Когда за SDR-файлом идёт
  HDR-файл, настройки возвращаются раньше, чем нарисован его первый кадр.
- **Ваш mpv.conf главнее.** Если вы сами задали там `gamma-factor` или
  `target-trc`, переключатель эту строку не трогает.
- **Снимки кадра следуют выбору**, поэтому экспортированный кадр выглядит так,
  как его показывал плеер.

Переключатель есть только на macOS: вопрос, на который он отвечает, — «mpv или
Apple», а в Windows нет стороны Apple, под которую подстраиваться.

## Вопросы

### mpv показывает видео неправильно?

Нет. В сравнении с QuickTime на том же дисплее mpv темнее в нижних полутонах — до 12 уровней из 255, — а цвета те же. Это другая тональная кривая, а не ошибка, и именно она ближе к вещательному стандарту, который рассчитан на затемнённую комнату. QuickTime рисует то же видео светлее намеренно.

### Дело в том, что в файле нет информации о цвете?

Ни в QuickTime, ни во Frame Player — копия того же файла с меткой BT.709 дала в обоих в точности те же числа, что и копия без метки. IINA от открытия к открытию показывала один из двух вариантов, и связать это с меткой нам не удалось.

### Какой из вариантов правильный?

По стандарту ближе тёмный. По тому, с чем сравнивают на Mac, — светлый: кривая QuickTime — это то, что показывает системный плеер, и видео, смонтированное и проверенное на Mac, часто утверждали именно в таком виде. Какой выбрать, зависит от того, какой из двух вы ожидаете увидеть.

### Тест на цветных полосах говорит, что mpv — самый точный плеер. Это так?

Зависит от эталона. Если эталон — «сырые» числа файла (180 и 16), тест поощряет плеер, который пропускает расширение ограниченного диапазона до полного. Если эталон — правильно расширенные значения (191 и 0), он по самому своему устройству поощряет соглашение mpv — mpv набирает около 0,3 уровня, QuickTime около 3,3. В любом случае тест говорит, каким соглашениям следует плеер, а полутонов, где mpv и QuickTime расходятся сильнее всего, полосы почти не касаются.

### Касается ли это HDR-видео?

Нет. В HDR-видео другая передаточная функция, и оно проходит через тонмаппинг; описанная здесь разница касается только SDR.

### Бывает ли такое в Windows?

Там этот вопрос по сути не встаёт. Разница — между mpv и собственным видеофреймворком Apple, а в Windows нет системного плеера, с кривой которого все сравнивают.
