Les API ActionScript 3.0 suivantes, liées aux sons, font l’objet de restrictions de sécurité :
-
Méthode
SoundMixer.computeSpectrum()
: toujours autorisée pour le code qui s’exécute dans le même sandbox de sécurité que le fichier audio. Des contrôles de sécurité sont nécessaires pour le code qui s’exécute dans d’autres sandbox.
-
Méthode
SoundMixer.stopAll()
: toujours autorisée pour le code qui s’exécute dans le même sandbox de sécurité que le fichier audio. Des contrôles de sécurité sont nécessaires pour les fichiers se trouvant dans d’autres sandbox.
-
Propriété
id3
de l’objet Sound : toujours autorisée pour les fichiers SWF qui se trouvent dans le même sandbox de sécurité que le fichier son. Des contrôles de sécurité sont nécessaires pour le code qui s’exécute dans d’autres sandbox.
Chaque son est associé à deux types de sandbox, un sandbox de contexte et un sandbox de propriétaire :
-
Le domaine d’origine du son détermine le sandbox de contexte. Celui-ci établit si les données peuvent être extraites du son via la propriété
id3
du son et la méthode
SoundMixer.computeSpectrum()
.
-
L’objet qui déclenche la lecture du son détermine le sandbox de propriétaire, qui établit à son tour si le son peut être arrêté à l’aide de la méthode
SoundMixer.stopAll()
.
Lorsque vous chargez le son à l’aide de la méthode
load()
de la classe Sound, vous pouvez spécifier un paramètre
context
, qui constitue un objet SoundLoaderContext. Si vous définissez la propriété
checkPolicyFile
de l’objet SoundLoaderContext sur
true
, le moteur d’exécution recherche un fichier de régulation d’URL sur le serveur à partir duquel est chargé l’audio. S’il existe un fichier de régulation autorisant le domaine du code à l’origine du chargement, le code peut accéder à la propriété
id
de l’objet Sound ; dans le cas contraire, l’accès est refusé. En outre, la propriété
checkPolicyFile
peut permettre d’activer la méthode
SoundMixer.computeSpectrum()
pour les sons chargés.
La méthode
SoundMixer.areSoundsInaccessible()
vous permet de savoir si l’appel à la méthode
SoundMixer.stopAll()
n’entraînerait pas l’arrêt de tous les sons parce que le sandbox de l’une ou de plusieurs des propriétés d’objet son est inaccessible à l’appelant.
La méthode
SoundMixer.stopAll()
permet d’arrêter tous les sons dont le sandbox de propriétaire est le même que celui de l’appelant de
stopAll()
. Elle arrête également les sons dont la lecture a été déclenchée par des fichiers SWF ayant appelé la méthode
Security.allowDomain()
pour autoriser le domaine du fichier SWF appelant la méthode
stopAll()
. Tous les autres sons ne sont pas arrêtés ; vous pouvez vérifier leur présence en appelant la méthode
SoundMixer.areSoundsInaccessible()
.
L’appel de la méthode
computeSpectrum()
demande que chaque son en cours de lecture soit issu du même sandbox que l’objet appelant la méthode ou de la même source qui a autorisé l’accès au sandbox de l’appelant. Autrement, une exception SecurityError est renvoyée. Pour les sons chargés à partir de sons incorporés dans la bibliothèque d’un fichier SWF, l’autorisation est accordée en appelant la méthode
Security.allowDomain()
dans le fichier SWF chargé. Pour les données audio chargées à partir de sources autres que des fichiers SWF (issues de fichiers mp3 chargés ou de fichiers vidéo), un fichier de régulation d’URL hébergé sur le serveur source doit autoriser l’accès aux données figurant dans le fichier multimédia chargé.
Pour plus d’informations, voir
Contrôles de création (développeur)
et
Contrôles de site Web (fichiers de régulation)
.
Pour accéder aux données audio à partir de flux RTMP, vous devez autoriser l’accès au serveur. La propriété ActionScript côté serveur
Client.audioSampleAccess
permet d’accéder à des répertoires spécifiques de Flash Media Server. Pour plus d’informations, voir le
Guide de référence ActionScript de Flash Media Server côté serveur
.