## Решение проблем

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

1 Проблемы установки
2 Другие проблемы
2.1 Пишите просто
2.2 Всегда проверяйте параметры
2.3 Тестируйте скрипты используя Virtualdub
2.4 Двигайтесь по скрипту шаг за шагом
2.5 Проверьте файлы Вашей папки автозагрузки плагинов
2.6 Используйте консервативные размеры кадра
2.7 Наконец прочтите AviSynth FAQ
2.8 Доклад об ошибках / Запрашивание помощи

#### Проблемы установки

Если Вам проблематично заставить AviSynth работать вообще, попробуйте создать файл Version.avs со следующим текстом внутри:

    Version()

и открыть его в Windows Media Player 6.4 (это файл "mplayer2.exe" расположенный обычно в "C:\Program Files\Windows Media Player", другие версии WMP могут не работать). Если вы увидите сообщение о версии AviSynth и Copyright, то он установлен правильно.

Если это не работает, Вы можете попробовать следующее:

- Очистите подкаталог плагинов AviSynth: автозагружаемые скрипты avsi или некоторые фильтры могут это вызвать (см. ниже).
- Установите кодеки, в частности Huffyuv: возможно у Вас отсутствует декодер, который нужен для вашего видео.
- Если Вы используете некоторый пакет кодирования (типа DVD2SVCD, GKnot, DVX, ...) удостоверьтесь, что Вы используете ту версию AviSynth, которая поставлялась с этим пакетом: возможно, что более новые версии AviSynth несовместимы с данным пакетом. Обратитесь за поддержкой к разработчикам этих пакетов.
- Переустановите AviSynth: возможно, что-то не в порядке с установкой. Если Вы пробовали бета версию, переустановите стабильный выпуск.
- Если все вышеизложенное не помогает, ищите помощи на форуме Doom9.

#### Другие проблемы

Создание скриптов с AviSynth не всегда легкое занятие, и иногда AviSynth дает очень странные результаты. Вот небольшое руководство, которое может помочь Вам выявить наиболее типичные ошибки.

#### Пишите просто

Если AviSynth производит странные результаты, попытайтесь упростить Ваш скрипт. Попытайтесь расщепить скрипт на возможно большее число строк текста. Это поможет Вам идентифицировать проблему. Например:

    video = AviSource("file23.avi").ConvertToYUY2().Trim(539,8534)
    return AudioDub(Blur(video,1.5).Reduceby2().Bilinearrresize(512,384),Wavsource("file23.wav").AmplifyDB(4.5)

не так читабельно в отличие от

    AviSource("file23.avi")
    ConvertToYUY2()
    Trim(539, 8534)
    Blur(video, 1.5)
    Reduceby2()
    Bilinearrresize(512, 384)
    AudioDub(Wavsource("file23.wav"))
    AmplifyDB(4.5)

Кроме того, преимуществом такой записи является возможность:

- Закомментировать отдельную команду (строку). Это удобно для тестирования эффекта отдельного фильтра.
- Получить сообщение о точном положении (строке) проблемной команды, если есть синтаксическая ошибка.
- Поместить "return last" в любом месте скрипта. Это выведет видео в текущем месте цепочки фильтров. Меняя положение "return last", Вы можете установить, до какой строки обработка идет нормально.
- Получить обзор "течения" скрипка. (Хорошо ли, что только команда Trim влияет на видео в клипе выше?)

#### Всегда проверяйте параметры

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

Удостоверьтесь, что Вы используете тот же тип параметров, как описанный в документации. Наиболее общая ошибка в этом случае относится к первому параметру всех (почти) фильтов, типа "clip". Удостоверьтесь, что Вы понимаете, как работает "неявный последний" ("implicit last"). Если вдруг не окажется "последнего клипа" ("last clip"), то большинство фильтров аварийно завершат работу с сообщением об ошибке "Invalid parameter" ("неподходящий параметр").

"Filter does not return a clip" ("Фильтр не возвращает клип") сообщается, если выход Вашего последнего фильтра присваивается некоторой переменной, и не существует никакого "последнего клипа" ("last clip"). Например:

    video = AviSource("file.avi")
    audio = WavSource("file.wav")
    combined = AudioDub(video, audio)

завершится аварийно. Это можно исправить следующим образом:

    video = AviSource("file.avi")
    audio = WavSource("file.wav")
    AudioDub(video, audio)

где 'last' теперь содержит клип, или:

    video = AviSource("file.avi")
    audio = WavSource("file.wav")
    combined = AudioDub(video, audio)
    return combined

где возвращается переменная, или даже:

    video = AviSource("file.avi")
    audio = WavSource("file.wav")
    return AudioDub(video, audio)

#### Тестируйте скрипты используя Virtualdub

Всегда используйте Virtualdub или даже лучше VirtualDubMod для тестирования Ваших скриптов. Это то, на чем тестируется вся функциональность AviSynth (его разработчиками). AviSynth конечно работает с другими программами, но если Вы получаете ошибки в других приложениях, то это наиболее вероятно проблема не AviSynth, а некоторое ограничение используемой программы.

Эти ограничения главным образом связаны с:

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

#### Двигайтесь по скрипту шаг за шагом

Как упоминалось в "Пишите просто", всегда хорошо проверить каждый шаг вашего скрипта, если есть проблемы.

Вы может закомментировать (деактивировать) любой фильтр (фильтры), поместив символ '#' в начале строки (или перед фильтром). Таким образом он (и весь остаток строки) будет игнорироваться AviSynth.

Вы можете поместить "return last" или "return НекотораяПеременная" в любом месте скрипта для контроля.

В любом месте скрипта Вы можете добавить фильтр Info(), чтобы получить информацию об изображении и звуке на данной стадии фильтрации.

#### Проверьте содержимое Вашей папки автозагрузки плагинов

Автозагрузка плагинов обычно работает нормально. Но Вы НЕ должны помещать туда:

- никакие плагины от несовместимых версий AviSynth (например старых 2.0.x).
- специальный плагин LoadPluginEx.DLL (из пакета WarpSharp) используемый для загрузки старых 2.0 плагинов в 2.5.х.
- AviSynth C-плагины (которые используют AviSynth C API вместо регулярного интерфейса).
- слишком много плагинов AviSynth (хотя этот предел автозагрузки 50 плагинов удален в версии 2.5.7)
- любые DLL файлы (иногда это безопасно, но не рекомендуется.)

Вы также должны помнить, что все файлы AVSI в Вашем каталоге автозагрузки плагинов автоматически включаются в Ваш скрипт. Это есть особенность, чтобы позволить Вам включать собственные (или заимствованные) функции, без необходимости копировать/вставлять их в каждый скрипт.

Примечание. В старых версиях AviSynth (вплоть до 2.0.7) все AVS файлы в Вашем каталоге автозагрузки плагинов автоматически включались в Ваш скрипт. Это также означает, что если Вы копируете примеры скриптов в данный каталог, то они будут всегда включаться, и могут генерировать ошибки (в старых версиях!).

Вообще, любой AVSI (ранее AVS) файл, команды которого не приводятся к функциям, будут проблемными.

Все другие форматы файлов кроме AVSI и DLL игнорируются, так что Вы можете безопасно оставлять Вашу документацию (TXT, HTM) здесь.

Как очистить каталог плагинов? Просто создайте некоторый подкаталог (например "hide") и переместите туда все (или некоторые) файлы. Помните, что некоторые файлы (плагины DirectShowSource.dll, TCPDeliver.dll и Colors_RGB.avsi) являются частью AviSynth (с версии 2.5.6).

#### Используйте консервативные размеры изображения

Если Вы имеете проблемы с искаженными изображениями, попытайтесь использовать консервативные размеры кадров. Это означает, лучше используйте размеры, где высота и ширина кратны 16. Использование размеров изображений не кратных 2 во многих случаях проблематично, и это надо избегать.

Если однако Вы обнаружите некоторую проблему с определенным размером изображения, пожалуйста сделайте доклад об ошибке (bug-report). Смотрите ниже как сделать это.

#### Наконец посмотрите AviSynth FAQ

Если Вы еще имеете проблемы (загрузка скриптов в определенные кодировщики, или ошибки цветовых пространств), загляните в вопросы и ответы по AviSynth (Q&A), особенно Q2.4: Problems when Encoder X reads AVS-files ? Также просмотрите раздел Q1.4: What are the main bugs in these versions ? FAQ.

#### Доклад об ошибках / Запрашивание помощи

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

Непременно всегда укажите:

- Версию AviSynth (и дата беты, если не финальный релиз с SourceForge)
- Наипростейший возможный скрипт для воспроизведения данной ошибки.
- ТОЧНОЕ (английское) сообщение об ошибке, которое Вы получили. Вы можете скопировать текст из окошка сообщения об ошибке VirtualDub в буфер Windows клавишами Ctrl-C и вставить его в текст на форуме клавишами Ctrl-V (или правой кнопкой мыши и т.п.). Или используйте клавиши Alt-PrintSreen, чтобы скопировать окно сообщения как изображение, сохраните в файл в редакторе рисунков и выложите его в интернет.
- Версию VirtualDub (Mod).
- Всю информация о файле: Virtual Dub / File / File Information.
- Версии использованных плагинов.
- Кодеки и размеры изображений входного материала.

Сообщения об ошибках могут быть доложены на SourceForge Project page. Проверьте, не было ли уже сообщено об ошибке подобной Вашей - это уже могло быть. Об ошибках во внешних плагинах надо сообщать не там, а автору данного фильтра.

Очень хорошим местом для получения помощи являются форумы Doom9. Сначала просмотрите форум (используя поиск), прежде чем задать вопрос. Многие темы уже затрагивались там! - Затем вступайте в обсуждение.

`$English Date: 2007/12/15 09:52:51 $
Русский перевод 15.12.2007 Fizick http://avisynth.org.ru`