Аудио и видео пазлы (Audio/Video) — Софт Эйт Софт
Description: Как загружать, воспроизводить и управлять аудио и видео с помощью пазлов Вердж3Д.

# Аудио и видео пазлы (Audio/Video)

Эти пазлы используются для загрузки и воспроизведения аудио и видеофайлов, а также для синтеза и воспроизведения MIDI-звуков.

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

- Перечень пазлов
  - load sound
  - load video
  - play
  - pause
  - stop
  - rewind
  - set playback time
  - get playback time
  - get duration
  - set playback rate
  - is playing
  - set volume
  - mute
  - unmute
  - positional speaker
  - synth sound
  - note number
  - drum number

#

## Перечень пазлов

#

### load sound

Загружает аудиофайл по указанному УРЛ-адресу. Аудио воспроизводится с помощью WebAudio API или HTML-элемента `<audio>` в зависимости от выбранного типа: sound/midi или music соответственно. Этот пазл также добавляет загруженное аудио в кэш, так что при последующем использовании этого пазла с тем же УРЛ-адресом звуковой файл не требует повторной загрузки. Мы рекомендуем использовать формат .mp3, так как он поддерживается большинством веб-браузеров.

Данная функциональность используется в демо-приложении «Приключения фермера» (исходные файлы доступны в магазине ассетов).

#### предзагрузка аудио

Загрузка аудиофайлов занимает некоторое время, поэтому они доступны не сразу. Простое использование этого пазла внутри пазла play может не сработать и звук может не воспроизводиться.

Чтобы быть уверенным в том, что звук в вашем приложении работает правильно, рекомендуется загружать звуковые файлы заранее, например, во вкладке инициализации, которая выполняется перед инициализацией приложения «Вердж3Д». Вы также можете использовать пазл connector, чтобы организовать группу пазлов "load sound" более удобным способом:

Предварительная загрузка аудио во вкладке инициализации.

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

Использование предварительно загруженного аудио на главной вкладке.

#### ограничения автоматического воспроизведения

В целом, запущенное программно воспроизведение (как в случае с пазлами), скорее всего, будет заблокировано браузером. Это происходит из-за политики автовоспроизведения, которая ограничивает автоматическое воспроизведение аудио на веб-странице. Цель таких ограничений — не дать веб-страницам издавать спонтанные звуки или воспроизводить аудио, когда это нежелательно.

Хотя такая политика может быть реализована по-разному в различных браузерах, а также может иметь различные условия для разрешения/неразрешения автовоспроизведения, общее правило для воспроизведения аудио — ждать, пока пользователь взаимодействует с вашей веб-страницей.

Ограничения не накладываются, когда такое взаимодействие уже подразумевается логикой приложения, например, воспроизведение звука при нажатии (будь то 3Д-объект или HTML-кнопка). Допустим, вы хотите, чтобы в вашем приложении была фоновая музыка, которая начинала бы играть при загрузке приложения. Поскольку это не всегда можно сделать автоматически, хорошим решением будет сделать кнопку "Старт" для запуска приложения, когда оно загружено и готово. Нажатие на нее считается взаимодействием с пользователем и позволяет запустить воспроизведение аудио.

#### Типы аудио "music", "sound", "midi"

Пазл позволяет выбрать, какой API использовать для загрузки и воспроизведения аудиофайлов.

sound (по умолчанию)
  Лучше подходит для коротких аудиофайлов, например звуковых эффектов; рекомендуется использовать этот тип только в следующих случаях:
  - Короткие, зацикленные (см. пазл play и его опцию loop) звуковые эффекты — "sound" делает зацикленное аудио бесшовным, в то время как с "music" у вас есть заметная задержка;
  - Звуковые эффекты, которые должны воспроизводиться немедленно, например, при взаимодействии с пользователем, в «Сафари» воспроизведение идёт с задержкой — "sound" устраняет эту проблему.
music
  Следует использовать в остальных случаях; лучше подходит для длинных аудиофайлов, например, фоновой музыки.
midi
  Особый тип sound, который используется для воспроизведения стандартных MIDI-файлов (с расширением *.mid). По сравнению с музыкой, хранящейся в *.mp3, MIDI-файлы действительно легкие и оказывают минимальное влияние на время загрузки приложения. Обратная сторона использования MIDI — несколько сниженное качество звуковой дорожки.

#

### load video

Создает HTML-элемент `<video>` и загружает видеофайл по указанному УРЛ-адресу. Этот пазл также добавляет созданный видеоэлемент в кэш памяти, чтобы при последующем использовании этого пазла с тем же УРЛ не загружать тот же звуковой файл снова. Рекомендуется использовать формат .mp4, поскольку он поддерживается большинством веб-браузеров.

Пазл load video не создает никаких видимых элементов на сцене. Чтобы сделать его видимым, назначьте видео как текстуру материала с помощью пазла replace texture.

Данная функциональность используется в демо-приложении Video Texture (исходные файлы доступны в магазине ассетов).

#

### play

Запускает воспроизведение аудио или видео. Параметр loop служит для зацикливания воспроизведения.

Из-за ограничений браузера (не позволяющих вредоносным веб-сайтам воспроизводить шумные звуки и видео) вы не должны выполнять этот пазл для автоматического воспроизведения ваших ассетов (при загрузке сцены). Вместо этого, вы должны сделать это в каком-либо пользовательском событии. Используйте when clicked или on event of для обработки таких событий.

Из этого правила есть одно исключение. Браузеры позволяют автоматически воспроизводить видео с выключенным звуком. См. пазл mute.

#

### pause

Приостанавливает воспроизведение аудио или видео.

#

### stop

Останавливает воспроизведение аудио или видео. Использование этого пазла эквивалентно использованию пазла pause, а за ним пазла rewind.

#

### rewind

Заставляет аудио или видео ресурс воспроизводиться с самого начала.

#

### set playback time

Установка текущего времени воспроизведения аудио/видео в секундах.

Установка времени воспроизведения не поддерживается для ассетов sound (WebAudio).

#

### get playback time

Получение текущего места воспроизведения аудио/видео в секундах.

Получение времени воспроизведения не поддерживается для ассетов sound (WebAudio).

#

### get duration

Возвращает длительность аудио/видео ресурса в секундах.

#

### set playback rate

Устанавливает скорость воспроизведения аудио/видео. Укажите значение `<1` для замедления воспроизведения, `1` для нормальной скорости и `>1` для увеличения скорости воспроизведения.

Установка скорости воспроизведения не поддерживается для ассетов midi.

#

### is playing

Проверяет, воспроизводится ли звук или видео.

#

### set volume

Устанавливает громкость звука. Входная громкость устанавливается в диапазоне 0,0-1,0. Этот пазл также работает для видео со встроенной звуковой дорожкой.

#

### mute

Делает воспроизведение аудио или видео ресурса беззвучным.

Помимо управления громкостью звука, вы можете использовать этот пазл для автоматического запуска воспроизведения видео. Это возможно, поскольку веб-браузеры позволяют воспроизводить видео с выключенным звуком без участия пользователя.

#

### unmute

Включает звук при воспроизведении аудио или видео ресурса.

#

### positional speaker

Делает звуковой ресурс позиционным, посредством прикрепления его к указанному 3Д-объекту.

Ресурсы типа sound и music могут быть превращены в позиционные источники. Для настройки воспроизведения таких источников используются параметры rolloff from – дистанция с которой начнётся уменьшение громкости звука и factor – интенсивность уменьшения с расстоянием.

#

### synth sound

Воспроизведение звука с помощью встроенного General MIDI-совместимого программного синтезатора (на основе библиотеки TinySynth). Поддерживаются различные инструменты и эффекты.

note on
  Начать воспроизведение note (ноты) с помощью заданного channel (канала) синтезатора с интенсивностью звука, указанной как velocity (скорость) (0-127). Используйте значение at time для указания времени начала воспроизведения в секундах.
note off
  Останавливает воспроизведение заданной note (ноты).
set instrument
  Установить инструмент канала из заданного списка.
set volume
  Установить громкость канала.
set pan
  Установить уровень pan канала.
stop sounds
  Остановить все звуки в выбранном канале.

Чтобы воспроизвести ударные, укажите Drums в качестве номера канала и используйте drum number для выбора инструмента.

Пример

#

### note number

Задает номер ноты. Используется для передачи нот в канал 1-9 пазла synth sound.

Номера октав указываются с помощью американской системы нотации, например, C 4 означает До первой октавы.

#

### drum number

Задает номер ударных. Используйте его для передачи нот в канал Drums пазла synth sound.

## Проблемы с пазлами?

Обращайтесь за помощью на наш форум!