Безопасность при загрузке и воспроизведении звуков

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Способность приложения получать аудиоданные может быть ограничена в соответствии с моделью безопасности проигрывателя Flash Player или AIR. На каждый звук распространяются ограничения двух разных изолированных программных сред: среды самого содержимого («изолированная программная среда содержимого») и среды приложения или объекта, который загружает и воспроизводит звук («изолированная программная среда владельца»). Если содержимое приложения AIR находится в изолированной программной среде приложения, для него доступны все звуки, включая загруженные из других доменов. Однако к содержимому из других изолированных программных сред применяются те же правила, что и к содержимому в Flash Player. Дополнительные сведения о модели безопасности проигрывателя Flash Player в целом и определения изолированных программных сред см. в разделе « Безопасность ».

Изолированная программная среда содержимого контролирует возможность извлечения подробных данных звука с помощью свойства id3 или метода SoundMixer.computeSpectrum() . Она не накладывает ограничений на загрузку или воспроизведение звука.

Исходный домен аудиофайла определяет ограничения по безопасности для изолированной программной среды содержимого. Как правило, если аудиофайл размещен в том же домене или папке, что и SWF-файл загружающего приложения или объекта, то приложение или объект будет иметь полный доступ к этому звуку. Если звук размещен в другом домене, то его можно импортировать в изолированную программную среду содержимого с помощью файла политики.

Приложение может передать объект SoundLoaderContext со свойством checkPolicyFile в качестве параметра метода Sound.load() . Если задать свойству checkPolicyFile значение true , проигрыватель Flash Player или AIR будет искать файл политики на сервере, с которого загружается звук. Если файл политики существует и предоставляет доступ домену загружающего SWF-файла, то этот SWF-файл сможет загрузить свойство id3 объекта Sound и вызвать метод SoundMixer.computeSpectrum() для загруженных звуков.

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

Метод SoundMixer.stopAll() останавливает все звуки во всех объектах SoundChannel, которые воспроизводятся в данный момент, если они соответствуют следующим критериям:

  • воспроизведение звуков было запущено объектами из той же изолированной программной среды владельца;

  • звуки размещены на исходном сервере, на котором есть файл политики, предоставляющий доступ домену приложения или объекта, который вызывает метод SoundMixer.stopAll() .

Однако в AIR эти ограничения по безопасности не распространяются на содержимое в изолированной программной среде приложения (содержимое, установленное с приложением AIR).

Чтобы выяснить, сможет ли метод SoundMixer.stopAll() остановить воспроизведение всех звуков, приложение должно вызвать метод SoundMixer.areSoundsInaccessible() . Если этот метод возвращает значение true , некоторые воспроизводимые звуки находятся за пределами текущей изолированной программной среды владельца и не могут быть остановлены методом SoundMixer.stopAll() .

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