AVISource / OpenDMLSource / AVIFileSource / WAVSource

AVISource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
OpenDMLSource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
AVIFileSource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
WAVSource (string filename [, ...])

AVISource берет как аргумент одно или более имен файлов в кавычках, и считывает файлы используя или Video-for-Windows "AVIFile" интерфейс или встроеный в AviSynth OpenDML код (взятый из VirtualDub'а). Этот фильтр может считывать любой файл, для которого существует AVIFile хендлер (обработчик). Это включает не только AVI файлы, но также WAV файлы, AVS (AviSynth скрипт) файлы, и VDR (фреймсервер ВиртуалДуба) файлы. Если вы напечатали несколько имен файлов в качестве аргумента, клипы будут срощены вместе с помощью UnalignedSplice. Логический аргумент "audio" является опциональным и по умолчанию равен true.

AVISource фильтр изучает файл для установления его типа и направляет его подходящему AVIFile или OpenDML обработчику. В случае, если имеются проблемы с одним или другим обработчиком, можно также использовать OpenDMLSource и AVIFileSource фильтры, которые форсируют использование конкретного обработчика. Каждый из обработчиков может считывать обычные (< 2GB) AVI файлы, но только OpenDML обработчик может считывать файлы больших размеров и только AVIFile обработчик может считывать файлы других типов, таких как WAV, VDR, и AVS.

До v2.04, WAVSource был известен также как AVIFileSource. В последующих версиях, WAVSource больше не пытается открывать видео потоки. Это может быть полезно если хочется вытащить аудио поток из AVI файла, но видео поток поврежден или его метод компрессии не поддерживается в текущей системе.

С v2.04 встроена поддержка АСМ (Менеджер Аудио Компрессии) аудио (например mp3-AVI). AVISource больше не может открывать WAV-файлы, с которыми необходимо работать используя WAVSource.

С v2.06 параметр pixel_type (по умолчанию YUY2) позволяет выбрать выходной формат декомпрессора. Разрешенные значения: "YUY2", "RGB32" и "RGB24". Если параметр опущен, AviSynth будет использовать первый формат, поддерживаемый декомпрессором (в следующем порядке : YUY2, RGB32, RGB24). Этот параметр не имеет эффекта для видео в некомпрессированном формате (YUY2, RGB32 or RGB24), потому что в этом случае никакой декомпрессор не будет использован. С v2.5 значение по умолчанию параметра pixel_type изменено на YV12. Иными словами: если Вы не укажете что-нибудь, то фильтр будет пробовать выдавать AVI в виде YV12, если это невозможно, то попробует YUY2 и если это также невозможно, то попробует RGB.

Иногда цвета будут искажены при загрузке DivX клипа в AviSynth 2.5 (цветовые каналы U И V поменяны местами), из-за ошибки в DivX (5.02 и старше). Можно использовать SwapUV для коррекции этого.

С v2.53 AVISource также может открывать видео DV типа 1 (только видео, не аудио).

С v2.55 добавлена опция fourCC. FourCC это четырех-буквенный код (FOUR Character Code) в начале медиа файла, в основном связанный с avi, который говорит, какой кодек должна использовать система для декодирования файла. Это можно использовать чтобы заставить AviSynth открывать файл, используя другой кодек. Список четырех-буквенных FOURCC кодов можно найти здесь. По умолчанию используется четырехбуквенный код из файла avi.

Некоторые MJPEG/DV кодеки не выдают правильный выход по стандарту CCIR 601 при использовании AVISource. Проблема может возникать если входной и выходной форматы цвета кодека различны. Например если входной формат цвета YUY2, а выходной формат цвета RGB или наоборот. Есть два варианта решения:

1) Форсировать одинаковый с входным выходной формат цвета. Так например (если входной формат RGB):

AVISource("file.avi", pixel_type="RGB32")

2) Скорректировать это фильтром ColorYUV:

AVISource("file.avi").ColorYUV(levels="PC->TV")

Некоторые связанные обсуждения на форумах:
MJPEG codecs
DV codecs

Примеры:

AVISource("d:\capture.avi")        # заметка С программистам: бэкслеши не дублируются
AVISource("c:/capture/00.avi")     # прямые слеши работают тоже
WAVSource("f:\soundtrack.wav")     # это работает 
WAVSource("f:/soundtrack.wav")     # и это тоже

# Следующее означает то же, что и AVISource("cap1.avi") + AVISource("cap2.avi")
AVISource("cap1.avi","cap2.avi")

# Следующее отключает аудио и запрашивает RGB32 декомпрессию
AVISource("cap.avi",false,"RGB32")

# Следующее открывает DV используя Canopus DV кодек
AviSource("cap.avi", false, fourCC="CDVC")

# Следующее открывает avi (например DivX3) используя XviD кодек  
AviSource("cap.avi", false, fourCC="XVID")

# Соединение двух клипов, где один из них не содержит аудио.
# При соединении клипы должны быть совместимыми (иметь одинаковые чвойства видео и аудио):
A = AviSource("FileA.avi")
B = AviSource("FileB.avi") # Нет аудио потока
A ++ AudioDub(B, BlankClip(A))  

Некоторые форматы сжатия накладывают предел числа вызовов AviSource() в скрипте. Некоторые люди достигли этого предела с около 50 вызовами AviSource в скрипте. Смотри обсуждение.

Изменения:

v2.55 Добавлена fourCC опция.

$English Date: 2008/07/11 18:20:45 $
Русский перевод 09.05.2005 Drakon Rider drakan.ru
Обновления 26.08.2005-17.08.2008 Fizick