# Часто задаваемые вопросы по Avisynth - Цветовой формат YV12 и вопросы его обработки

## Содержание

1. Что такое YV12?
2. Где я могу скачать последнюю стабильную версию AviSynth, которая поддерживает YV12?
3. Где я могу скачать модуль DGIndex/DGDecode, который поддерживает YV12, для импорта MPEG-1/MPEG-2/TS/PVA в AviSynth?
4. Какие программы-кодировщики поддерживают YV12?
5. Как использовать v2.5x, если программы кодирования не могут обрабатывать YV12 (типа TMPGEnc или CCE SP)?
6. Какие основные преимущества обработки в YV12?
7. Как использовать VirtualDub/VirtualDubMod так, чтобы не было ненужных цветовых преобразований?
8. Какие внутренние фильтры поддерживают YV12?
9. Какие плагины (внешние модули) поддерживают YV12?
10. Есть ли недостатки обработки в YV12?
11. Как узнать, какое цветовое пространство я использую в данном месте в моем скрипте?
12. Цвета заменяются, когда я загружаю DivX файл в AviSynth v2.5?
13. Я получаю зеленую (или цветную) линию слева или справа клипа, как мне избежать этого?
14. Я установил AviSynth v2.5 и получил следующее сообщение об ошибке: "Не могу найти декомпрессор для 'YV12' формата (unknown)"?
15. Я установил AviSynth v2.5 и DivX5 (или одну из последних сборок Xvid), но все, чего я добился, это черный экран при открытии моего avs в VirtualDub/VirtualDubMod/MPEG-2 кодировщике?
16. Есть ли какие-то беспотерьные YV12 кодеки , которые я могу использовать для захвата, например?
17. Некоторые важные ссылки

### Что такое YV12?

Это несколько различных способов представление цвета. Например: цветовое пространство YUV и RGB. В YUV цветовом пространстве есть один компонент, который представляет яркость (сигнал яркости) и два других компонента, которые представляют цвет (сигнал цветности). В то время как яркость передается со всеми деталями, некоторые детали в компонентах сигнала цветности могут быть удалены путем понижения разрешения отсчетов (фильтрация или усреднение), что может быть сделано несколькими способами (т.о. есть много форматов для сохранения изображения в цветовом пространстве YUV). YV12 - один из таких форматов (тут сигнал цветности общий для каждого блока пиксел 2x2), который поддерживается AviSynth. Много важных кодеров сохраняли видео в YV12: MPEG-4 (x264, XviD, DivX и много других), MPEG-2 на видеодисках DVD, MPEG-1 и MJPEG.

### Где я могу скачать последнюю стабильную версию AviSynth, которая поддерживает YV12?

"AviSynth v2.57" (и более свежие версии) можно загрузить отсюда.

### Где я могу скачать модуль DGIndex/DGDecode, который поддерживает YV12, для импорта MPEG-1/MPEG-2/TS/PVA в AviSynth ?

Последний DGIndex/DGDecode комбо можно загрузить отсюда.

### Какие программы-кодировщики поддерживают YV12?

Стандартные сборки Virtualdub (от Avery Lee) имеют поддержку YV12 в режиме быстрой рекомпрессии с v1.5.6. Есть также два других способа кодирования в DivX/XviD:
Есть измененная версия Virtualdub (названная VirtualdubMod), которая поддерживает YV12: Эта версия (от pulco-citron, Suiryc и Belgabor) имеет поддержку OGM и предпросмотра AVS. Она может быть загружена отсюда. Чтобы использовать поддержку YV12 (не делая каких-либо цветовых преобразований), Вы должны загрузить ваш AVI в VirtualdubMod, и выбрать режим "быстрой рекомпрессии" ("fast recompress").
Для простой (и быстрой) поддержки YV12, Вы можете также попробовать утилиту командной строки AVS2AVI - она сжимает видео из сценария (скрипта) AviSynth, используя любой VFW кодек, смотри также здесь.
Кодировщики MPEG-1/MPEG-2 HC и QuEnc также поддерживают (и даже требуют) YV12.

### Как использовать v2.5x, если программы кодирования не могут обрабатывать YV12 (типа TMPGEnc или CCE SP)?

При использовании TMPGEnc Вы должны добавить в ваш сценарий (скрипт) строку "ConvertToRGB24" (с надлежащей опцией "чересстрочности" ), а для CCE SP Вы должны добавить в ваш сценарий строку "ConvertToYUY2", так как Windows не имеет внутреннего YV12 декомпрессора.

Вы можете также установить какой-либо YV12 декомпрессор (кодек), который декомпрессирует для Вас YV12-AVI при загрузке avi в TMPGEnc или CCE SP.

### Какие основные преимущества обработки в YV12?

- увеличение скорости:
  Это зависит полностью от внешних модулей, имеют ли они поддержку YV12 или нет. Ожидается увеличение скорости примерно 25-35%. Конечно же, большое увеличение скорости будет только если и ваш исходный и конечный форматы находятся в YV12, например при преобразовании DVD до DivX/Xvid.
- никаких цветовых преобразований:
  Цветовая информация не интерполируется (слишком часто) и таким образом остается более реалистичной.

MPEG-2 кодеры типа CCE, Procoder и TMPGEnc не могут непосредственно обрабатывать входящий YV12. CCE и Procoder нуждаются в YUY2, а TMPGEnc - в RGB24. Это означает лишь, что последней строкой AviSynth должен быть вызов ConvertToYUY2 (для CCE/Procoder, или ConvertToRGB24 для TMPGEnc), и что Вы не сможете воспользоваться полным преимуществом цветового пространства YV12. Однако, есть еще два преимущества:

1. Вся внутренняя обработка AviSynth будет все-таки быстрее (меньше данных к фильтру, лучше структура для фильтрации и очень быстрое преобразование с YV12 в YUY2), и Вы наверняка увидите различие между v2.06 и v2.5.
2. Если Вы делаете прогрессивный клип есть другое преимущество. Откладывая преобразование YV12-> YUY2 до конца сценария (скрипта) позволяет Вам вначале проделать процедуру IVTC или Deinterlace для создания прогрессивных кадров. Но преобразование YV12 в YUY2 для прогрессивных кадров сохраняет больше деталей сигнала цветности чем преобразование для чересстрочных или основанных на полях кадров.
   Цветовые преобразования:
   CCE: YV12 -> YUY2 -> YV12
   TMPGEnc: YV12 -> RGB24 -> YV12

### Как использовать VirtualDub/VirtualDubMod так, чтобы не было ненужных цветовых преобразований?

Просто загрузите ваш avs файл в VirtualDub/VirtualdubMod и установите видео на "Быстрая рекомпрессия" (fast recompress). В этом режиме обработка останется в YV12 (вся необходимая фильтрация должна быть сделана непосредственно в AviSynth). В меню "Компрессия" выберите кодер, который поддерживает YV12, типа Xvid, DivX5, RealVideo (при условии, что Вы загружаете последние версии) или 3ivx D4 (при условии, что Вы загружаете последние версии). Обратите внимание, что DivX3/4 также поддерживает YV12, за исключением того, что пользователи PIV могут испытать сбои при кодировании в формат DivX4 в YV12.
Если Вы хотите предварительно просмотреть видео, Вы также нуждаетесь в YV12 декомпрессоре.

### Какие внутренние фильтры поддерживают YV12?

В принципе все внутренние фильтры поддерживают YV12 изначально. Цветовые форматы, поддерживающиеся фильтрами, указаны в документации.

### Какие плагины (внешние модули) поддерживают YV12?

Плагины, которые откомпилированы для AviSynth v2.5, указаны в файле Внешние плагины. Новые плагины перечислены в этом дополнении. Большинство из них поддерживают YV12 (см. документацию).

### Есть ли недостатки обработки в YV12?

- Если исходный формат - не YV12 (аналоговый захват, DV), или конечный формат кодирования - не YV12, то преобразование цветового формата будет приводить к интерполяции сигнала цветности с некоторым ухудшением качества.
- Обработка прореженного сигнала цветности может привести к некоторому расширению цветности относительно пикселов яркости, особенно для чересстрочного видео.
- Из-за того, что цветность в чересстрочном YV12 видео лежит на чередующихся строках, необходимо использовать различные методы повышения/понижения отсчетов при преобразовании между YV12 и YUV 4:2:2 или RGB. Это может вести к ошибкам повышения/понижения отсчетов цветности, если выбран неверный метод для данного видео.
- Если YV12 видео хранится в AVI контейнере, не существует метаданных для индикации является ли видео черестрочным или прогрессивным. Это означает, что приложение или компонент осуществляющий преобразование цвета не имеет простого способа выбрать корректный метод преобразования (черестрочный или прогрессивный). Большинство преобразователей подразумевают прогрессивный, что может вести к ошибкам повышения отсчетов цветности, если в таком окружении преобразуется чересстрочное виде.

### Как узнать, какое цветовое пространство я использую в данном месте в моем скрипте?

Чтобы увидеть, какое цветовое пространство Вы используете в данном месте в вашем сценарии (скрипте), добавьте:

    Info()

... и AviSynth выдаст Вам много информации о цветовом пространстве и много чего другого!

### Цвета заменяются, когда я загружаю DivX файл в AviSynth v2.5?

Это случается из-за ошибки в старых версиях DivX5. Загрузите последние сборки или используйте "SwapUV (клип)".

### Я установил AviSynth v2.5 и получил следующее сообщение об ошибке: "Не могу найти декомпрессор для 'YV12' формата (unknown)"?

Установите кодек, который поддерживает YV12. DivX5 или одну из последних сборок XviD или кодек Helix YUV или некоторый другой (ffvfw, ffdshow). Если это все еще не работает, измените ваш системный реестр как объяснено в следующем вопросе.

### Я получаю зеленую (или цветную) линию слева или справа клипа, как мне избежать этого?

Ваш декодер вероятно неисправен, попробуйте ConvertToRGB() в конце вашего скрипта просто чтобы удостовериться и проверить, исчезла ли линия. Некоторые приложения имеют проблемы с отображением YV12 клипов, если ширина или высота не кратны 16.

Есть несколько решений этой проблемы:

- Попробуйте заставить кодек декодировать в RGB или YUY2 (используя pixel_type="..." аргумент в AviSource или DirectShowSource).
- Используйте кодек, который декодирует YV12 клипы корректно, даже если ширина или высота не кратны 16.

### Я установил AviSynth v2.5 и DivX5 (или одну из последних сборок Xvid), но все, чего я добился, это черный экран при открытии моего avs в VirtualDub/VirtualDubMod/MPEG-2 кодировщике?

Так, видно ваше видео не декомпрессируется DivX 5.02 (или Xvid). Попробуйте использовать утилиту VCSwap для переключения на лету видео кодеков.

Опытный пользователь может также сделать это вручную. Зайдите в папку Windows и переименуйте файл c именем MSYUV.DLL, или добавьте следующее к вашему файлу системного реестра:

    REGEDIT4

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32]
    "VIDC.YV12"="divx.dll"

Замените "divx.dll" на "xvid.dll" для xvid v0.9 или "xvidvfw.dll" для xvid v1.0.

### Есть ли какие-то беcпотерьные YV12 кодеки, которые я могу использовать для захвата, например?

Захват в YV12 не рекомендуется из-за проблем с чересстрочностью и цветностью; YUY2 будет вообще говроря давать меньше проблем. Беспотерьный (lossless) YV12 кодек более полезен при сохранении промежуточных файлов перед много-проходным кодированием, чтобы избежать выполнения скрипта с интернсивной загрузкой процессора несколько раз. Есть несколько беспотерьных YV12 кодеков:

- VBLE кодек (от MarcFD): Кодек на базе huffyuv [обсуждение].
- Loco кодек (от TheRealMoh): см. также здесь
- ffvfw кодек - имеет различные режимы, в частности HuffYUV yv12
- Lagarith кодек (от Ben Greenwood) - лучшее сжатие чем Huffyuv, но медленнее

### Некоторые важные ссылки:

- Техническое объяснение YV12 (и подобных форматов)
- Хорошая страница Microsoft по YUV
- Видеоформаты пиксел 4:2:0

| Содержание FAQ | Общая информация | Загрузка клипов | Открытие скриптов | Общие сообщения об ошибках | Обработка различного контента | Работа с YV12 | Обработка с плагинами от Virtualdub |

`$Engilsh Date: 2008/07/02 20:56:38 $
Русский перевод 11.12.2006 Soroka (lyakh at iname.com)`
Обновления 10.06.2007-02.07.2008 Fizick