# AviSynth FAQ - Распознавание и обработка контента различных типов

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

1. Видео и аудио в моем закодированном файле несинхронны, что мне делать?
2. Как мне распознать прогрессивный, чересстрочный, телекино-преобразованный, гибридный и полученный смешением контенты?
3. Как обрабатывать чересстрочное видео?
4. Как обрабатывать телекино-преобразованное видео?
5. Как обрабатывать гибридное видео?
6. Что такое видео с переменной частотой кадров?
7. Как импортировать видео с переменной частотой в AviSynth и как его обрабатывать?

### Видео и аудио в моем закодированном файле несинхронны, что мне делать?

Предполагая, что вы обрабатываете ваше видео с AviSynth, существует несколько причин, почему ваше закодированный файл несинхронный (нет синхпронизации). Наиболее частые причины:

1) Ваш источник уже сам несинхронен (еще до обработки в AviSynth или кодирования). Его трудно скорректировать, но это не предмет данного документа (FAQ).

2) Аудио имеет постоянную задержку, и вы забыли эту задержку добавить (либо в AviSynth, если вы импортируете аудио в AviSynth, или в кодировщике, если вы импортируете аудио прямо в кодировщик). Например, демультиплексированный аудио поток из VOB часто имеет задержку. При демультиплексировании этого аудио потока с DGIndex, эта задержка (в действительности на сколько задержка должна быь скорректирована) записывается в имя демультиплексированного аудио потока. Вы можете использовать DelayAudio для добавления задержки в AviSynth.

    vid = MPEG2Source("D:\movie.d2v")
    aud = NicAC3Source("D:\movie T01 2_0ch 448Kbps DELAY -218ms.ac3")
    AudioDub(vid, aud)
    DelayAudio(-0.218)

3) Аудио имеет переменную задержку (с нулевой задержкой в начале и максимальной задержкой в конце). Это может произойти, если вы загружаете в AviSynth клип, который имеет переменную частоту кадров. Очень много чего, исключая видео содержащееся в AVI или MPEG-2/VOB файле, может иметь переменную частоту кадров. Если вы используете DirectShowSource для загрузки клипа, вы можете использовать

    # mkv-файл используется здесь в качестве примера:
    DirectShowSource("D:\movie.mkv", fps=xxx, convertfps=true) # fps = средняя частота кадров

для принудительной синхронизации. При этом происходит добавление или отбрасывание кадров для поддержания синхронности, таким образом преобразуя это в видео постоянной частоты.

Если вы не используете DirectShowSource или вы не хотите добавлять и убирать кадры, то вам необходимо создать сначала файл временных кодов и использовать его позже при вашем финальном кодировании. Посмотрите эту статью для более полной информации по этому вопросу.

### Как мне распознать прогрессивный, чересстрочный, телекино-преобразованный, гибридный и полученный смешением контенты?

Важно знать, каков ваш контент, если вы хотите обрабатывать его. Наиболее важными являются: прогрессивный, чересстрочный, телекино-преобразованный, гибридный и полученный смешением, и они должны обрабатываться различно.

- Прогрессивный и чересстрочный (interlaced) контент:
  Большинство фильтров предполагают, что ваш контент - прогрессивный (что означает, что каждый кадр снят в различный момент времени), кроме случаев, если фильтр имеет опцию interlaced=true/false. Если такая опция присутствует, вы можете использовать interlaced=true для чересстрочного (интерлейсного) контента. Для чересстрочного контента, каждое поле (а кадр состоит из двух полей) взято в различный момент времени. Это объясняется в Analog Capture Guide и руководстве Force Film, IVTC, and Deinterlacing.
- Телекино-преобразованный (Telecined) контент:
  Обычно кинофильмы снимаются при 24 к/с (кадров в секунду). При помещении этого на dvd, добавляются поля (полукадры), чтобы получить требуемую частоту кадров 30 к/с (ладно, это в действительности 29.97 к/с, но здесь это пока неважно). При производстве этого, контент называется "телекино контент" (это остается для преобразований 25 к/с -> 30 к/с и 24 к/с -> 25 к/с также, при условии что добавляются поля). Больше информации об этом может быть найдено в руководстве Force Film, IVTC, and Deinterlacing.
- Гибридный (Hybrid) контент:
  Гибридный контент - это контент с различными базовыми частотами кадров (например 8, 12, и 16 к/с, при которых часто рисуются мультфильмы анимэ). Start Trek является другим примером, состоящим из телекино-контента (при 30 к/с) и чересстрочного контента (при 30 к/с). Посмотрите эту статью для большей информации по этому вопросу.
- Полученный смешением (Blended) контент:
  Полученный смешением контент - это контент, который состоит из смешенных полей (в некоторый полях есть видимое содержимое от другого момента времени). Это обычно результат плохого преобразования NTSC в PAL (и наоборот), или неправильного деинтерлейса. Некоторые примеры могут быть найдены здесь или здесь.

### Как обрабатывать чересстрочное видео?

Есть два способа обрабатывать чересстрочный контент (предполагая, что вы используете фильтр, который не имеет опции interlaced=true). Первый способ наиболее аккуратный, но также медленный: Боб-деинтерлейс (bobbing), обработка и восстановление чересстрочности (reinterlacing). Второй способ - быстрый, но также и менее аккуратный: обработка полей (каждой четности) раздельно.

1) Боб-деинтерлейс:

    AssumeTFF() # или AssumeBFF (установите порядок полей видео корректно!)
    TDeint(mode=1, type=3) # или любой другой (умный) Боб (удвоение высоты каждого поля)
    Filter(...)
    AssumeTFF() # or AssumeBFF (установите порядок полей видео корректно!)
    Separatefields()
    Selectevery(4,0,3)
    Weave()

2) обработка полей раздельно:

    SeparateFields()
    even = SelectEven(last).Filter(...) # четные поля
    odd = SelectOdd(last).Filter(...)   # нечетные поля
    Interleave(even, odd) # восстановим чересстрочность
    Weave()

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

Вам необходимо сделать обратное телекино-преобразование (IVTC) перед любой обработкой. Вы можете например использовать плагин Decomb, который может быть загружен здесь. Смотри руководство "Force Film, IVTC, and Deinterlacing - что DVD2AVI пытается вам сказать и что вы можете с этим делать." или "the analog capture guide" которые объясняют, как это делать.

### Как обрабатывать гибридное видео?

Вы встретите затруднения, только если ваш клип, открытый в AviSynth, показывает гребенку (combing) (будучи частично чересстрочным, телекино, и т.п. ...). Я пока не уверен, что лучше всего делать в данном случае.

### Что такое видео с переменной частотой кадров?

Есть два вида видео с точки зрения частоты кадров, видео с постоянной частотой (cfr) и переменной частотой кадров (vfr). Для cfr видео, кадры имеют постоянную длительность, а для vfr видео, кадры имеют непостоянную длительность. Многие программы-редакторы (включая VirtualDub и AviSynth) предполагают, что видео является cfr, в частности так как avi не поддерживает vfr. Хотя avi контейнер не поддерживает vfr, существуют несколько контейнеров (например mkv, mp4 и wmv/asf), которые поддерживают vfr. Больше информации можно найти здесь.

### Как импортировать видео с переменной частотой в AviSynth и как его обрабатывать?

Существуют два способа импортировать видео с переменной частотой в AviSynth:

1. Загрузите видео в AviSynth, используя например DirectShowSource(..., convertfps=false) или FFmpegSource. Проблемой явлается в этих случаях, что при преобразовании в видео постоянной частоты кадры не добавляются или удаляются (что надо бы для синхронности с аудио).
   Сгенерируйте файл временных кодов (timecode), используя некоторую внешнюю программы или спользуя плагин AviSynth, который вы используете для импорта видео в AviSynth (если возможно). Многие не-AVI файлы содержат видео с переменной частотой, и в этом случае вам необходимо удостовериться в следующих двух вещах:
   1. Не меняйте частоту кадров и число кадров в AviSynth. Если вы не выполните это (и вы не подправили файл временного кода вручную), то видео и аудио в ваше финальном кодировании будут не сихронны.
   2. Используйте файл временного кода снова, когда мультиплексируете (muxing) ваше кодированное видео с audio. Если вы не выполните это, то видео и аудио в ваше финальном кодировании будут не синхронны.
2. Загрузите видео в AviSynth используя например DirectShowSource(..., converfps=true). В этом случае кадры будут добавляться или удаляться в видео постоянной частоты, для достижения синхронности. Вы можете (дальше) обрабатывать видео любым способом, как хотите. Вы можете даже создать новый файл временных кодов и, используя его, создать новое видео с переменной частотой. Больше информации может быть найдено здесь.

Относительно первого способа. Если вы изменили частоту или число кадров, вы можете использовать DeDup для создания нового файла временных кодов:

    dedup_dedup(threshold=0.1, maxcopies=10, maxdrops=4, log="01.log", timesin="original.tmc", times="final.tmc")

Параметр "timesin" указывает файл временных кодов оригинального видео, на котором будет основываться выходной файл (а не просто используя частоту кадров входного потока). Я никогда не использовал это, так что не уверен, насколько способ хорош. Посмотрите обсуждение.

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

`$English Date: 2008/07/02 18:57:42 $
Русский перевод 02.07.2008 Fizick http://avisynth.org.ru`