К содержанию
fohbookбета/ TouchDesigner

Movie File In: воспроизведение

Четыре режима времени, индекс в кадрах файла, Pre-Read против рывков, preload() перед сменой ролика и каналы Info, по которым видно, открылся ли файл.

Ветка вашего пульта:
Быстрый выбор:

Movie File In TOP — плеер с управлением по кадрам, и плавность зависит от того, как им управлять.

Режимы

Play Mode на странице Play:

Режим Как идёт время Когда
Sequential Файл играет сам: Play включает, Speed задаёт скорость Обычное воспроизведение; режим по умолчанию
Specify Index Кадр задаётся параметром Index Точный контроль: скрабирование, синхронизация, кадр из CHOP
Locked to Timeline Кадр файла привязан к таймлайну проекта Контент, сделанный под таймлайн
Timecode Object/CHOP/DAT Кадр берётся из таймкода Шоу по таймкоду

Шоу и синхронные машины держатся на Specify Index и таймкоде: кадр считается из внешнего времени. Index Unit бывает в кадрах файла, кадрах проекта, секундах или долях 0…1 от длины.

Индекс — в кадрах файла

В единицах I счёт идёт по кадрам файла: у ролика на 30 кадров индекс 30 означает секунду, даже если проект идёт в 60.

Что ещё на страницах

File принимает относительный путь от папки проекта и даже адрес http://. Play, Speed, Cue и Cue Point — транспорт, причём Cue держит ролик на точке, пока включён. Loop Crossfade сглаживает стык конца с началом, Audio Loop решает, что на этом стыке делать со звуком. На Trim обрезают ролик без перекодирования и выбирают, что показывать за его пределами: держать кадр, зациклить, отразить, чёрное. На Image находятся межкадровая интерполяция (Interpolate Frames, недёшево), Deinterlace и Pre-Multiply RGB by Alpha для прозрачности.

Tune

Параметр Зачем
Pre-Read Frames Сколько распакованных кадров держать наготове в памяти процессора
Frame Timeout Strategy Что делать, когда кадр не успел: держать прежний, оптимизировать под воспроизведение или под перемотку
Max Decode CPUs Сколько ядер отдать на распаковку
High Performance Read Читать файл с диска в обход кэша системы — для очень тяжёлых файлов: HAP в высоком разрешении, сжатие без потерь
Hardware Decode Аппаратный декодер NVIDIA (на macOS — аппаратный декодер Mac) — Кодеки
Callbacks DAT Свой Python на события плеера

Видео дёргается в начале клипа или после перемотки — сначала увеличивают Pre-Read Frames, платя за это памятью.

Кадр идёт к экрану в три шага: чтение с диска, распаковка, загрузка в видеопамять. Распакованные кадры ждут в очереди Pre-Read. После прыжка в другое место ролика нужного кадра в очереди нет, плеер ждёт его чтения и распаковки — это pre-read miss, он и даёт рывок.

Звук и несколько клипов

Звук из файла отдаёт Audio Movie CHOP с путём к плееру в параметре Movie File In TOP. Он идёт за показываемым кадром, так что синхронен и тогда, когда Index двигают руками.

Клипы меняют тремя способами. Один плеер и смена File дают паузу на загрузку — годится, где переход не важен. Два плеера и Cross TOP дают плавный переход, потому что следующий клип уже открыт. Плейлист по папке собирают Folder DAT, Replicator или готовый moviePlaylist из палитры — Плейлист.

Смена файла — это загрузка

Новый файл открывается несколько кадров, иногда дольше. Сменили файл в момент показа — шоу дёрнулось. Открывайте заранее: op('movie2').preload() открывает файл и читает первые кадры, стараясь не мешать текущему воспроизведению, а op('movie2').isFullyPreRead скажет, что всё готово.

Открылся ли файл

Info CHOP на плеере даёт open, open_failed, length, sample_rate (частоту файла) и index, а pre_read_misses и disk_read_mbit_rate показывают, сколько кадров не успело и как быстро читается диск. Выведите их на служебную панель — на площадке это отвечает, не читается файл или его просто не видно.

Нашли в статье ошибку, устаревшее или непонятное место?

На других пультах

весь переводчик →
Клипздесь — Movie File In TOP
  • ResolumeClip
  • MilluminMedia
  • MadMapperMedia
рядом по смыслу