Accès aux médias chargés comme s’il s’agissait de donnéesFlash Player 9 et ultérieur, Adobe AIR 1.0 et ultérieur Pour accéder aux données chargées, faites appel aux méthodes BitmapData.draw() et SoundMixer.computeSpectrum(). Par défaut, il est impossible d’obtenir des données de pixels ou des données audio d’objets graphiques ou audio rendus ou lus par un fichier multimédia chargé dans un autre sandbox. Vous disposez toutefois des méthodes suivantes pour accorder un droit d’accès à ces données en franchissant les limites du sandbox :
Les sections qui suivent offrent des détails sur l’accès aux données bitmap, son et vidéo. Accès aux données bitmapLa méthode draw() de l’objet BitmapData vous permet d’extraire les pixels actuellement affichés de tout objet d’affichage vers l’objet BitmapData. Il peut s’agir des pixels d’un objet MovieClip, d’un objet Bitmap ou d’un objet d’affichage. Les conditions suivantes doivent être remplies pour que la méthode draw() puisse extraire les pixels vers l’objet BitmapData :
Si ces conditions ne sont pas réunies, une exception SecurityError est renvoyée. Lorsque vous appelez la méthode load() de la classe Loader, vous pouvez spécifier un paramètre context, qui constitue un objet LoaderContext. Si vous réglez la propriété checkPolicyFile de l’objet LoaderContext sur true, Flash Player recherche un fichier de régulation d’URL sur le serveur à partir duquel l’image est chargée. S’il existe un fichier de régulation autorisant le domaine du fichier SWF à l’origine du chargement, le fichier peut accéder aux données de l’objet Bitmap ; dans le cas contraire, l’accès est refusé. Vous pouvez également spécifier une propriété checkPolicyFile dans une image chargée via la balise <img> d’un champ de texte. Pour plus d’informations, voir Chargement de fichiers SWF et d’images à l’aide de la balise <img> d’un champ de texte. Accès aux données audioLes API ActionScript 3.0 suivantes, liées aux sons, font l’objet de restrictions de sécurité :
Chaque son est associé à deux types de sandbox, un sandbox de contexte et un sandbox de propriétaire :
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. Accès aux données vidéoLa méthode BitmapData.draw() vous permet de capturer des données de pixels à partir de l’image active d’une vidéo. Il existe deux types de vidéo :
Pour extraire les graphiques d’exécution de flux RTMP par le biais de la méthode BitmapData.draw(), vous devez autoriser l’accès au serveur. La propriété ActionScript côté serveur Client.videoSampleAccess 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. Lorsque vous appelez la méthode BitmapData.draw() avec la vidéo progressive comme paramètre source, l’appelant de BitmapData.draw() doit provenir du même sandbox que le fichier FLV ou le serveur du fichier FLV doit contenir un fichier de régulation qui autorise le domaine du fichier SWF appelant. Pour demander le téléchargement du fichier de régulation, définissez la propriété checkPolicyFile de l’objet NetStream sur true. |
|