Package | flash.media |
Classe | public final class SoundMixer |
Héritage | SoundMixer Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
).
Propriété | Défini par | ||
---|---|---|---|
audioPlaybackMode : String [statique]
Spécifie le mode de lecture audio de tous les objets Sound. | SoundMixer | ||
bufferTime : int [statique]
Durée, en secondes, de préchargement dans une mémoire tampon d’un son en flux continu imbriqué avant que la diffusion en continu ne commence. | SoundMixer | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
soundTransform : flash.media:SoundTransform [statique]
Objet SoundTransform contrôlant les propriétés audio globales. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [statique]
Active/désactive le haut-parleur du téléphone lorsque le périphérique est en mode vocal. | SoundMixer |
Méthode | Défini par | ||
---|---|---|---|
[statique]
Détermine si des sons sont inaccessibles en raison de restrictions de sécurité. | SoundMixer | ||
[statique]
Génère un instantané de l’onde sonore actuelle et le place dans l’objet ByteArray spécifié. | SoundMixer | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
[statique]
Arrête tout son en cours de lecture. | SoundMixer | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
audioPlaybackMode | propriété |
audioPlaybackMode:String
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 3 |
Spécifie le mode de lecture audio de tous les objets Sound. Sur les périphériques mobiles, cette priorité définit les priorités du son et les valeurs par défaut en fonction des langues de la plate-forme. Dans les environnements de bureau et de télévision, aucune différence fonctionnelle n’existe entre les modes de lecture audio.
Les valeurs valides de cette propriété sont définies dans la classe AudioPlaybackMode.
Remarque : sur iOS, si une application utilise audioPlaybackMode=AudioPlaybackMode.VOIX
, les autres applications ne peuvent pas modifier ce paramètre et utiliser AudioPlaybackMode.MEDIA
.
Utilisez le moins possible le mode AudioPlaybackMode.VOICE
et essayez de passer au mode AudioPlaybackMode.MEDIA
dès que possible après la fin de l’appel vocal afin de permettre la lecture d’autres applications en mode multimédia.
Lorsque vous changez le mode de lecture audio sur iOS, les applications natives de lecture audio se mettent brièvement en pause.
La valeur par défaut est AudioPlaybackMode.MEDIA.
Implémentation
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Valeur émise
ArgumentError — kInvalidParameterError
|
Eléments de l’API associés
bufferTime | propriété |
bufferTime:int
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Durée, en secondes, de préchargement dans une mémoire tampon d’un son en flux continu imbriqué avant que la diffusion en continu ne commence. Les données d’un son chargé, y compris sa durée de préchargement en mémoire tampon, ne sont pas accessibles par un fichier SWF appartenant à un autre domaine, sauf si vous mettez en place un fichier de régulation interdomaines. Pour plus d’informations sur la sécurité et le son, voir la description de la classe Sound. Les données d’un son chargé, y compris sa durée de préchargement en mémoire tampon, ne sont pas accessibles par le code d’un fichier appartenant à un autre domaine, sauf si vous mettez en place un fichier de régulation interdomaines. Néanmoins, dans le sandbox d’application d’une application AIR, le code peut accéder aux données dans des fichiers de son à partir de n’importe quelle source. Pour plus d’informations sur la sécurité et le son, voir la description de la classe Sound.
La propriété SoundMixer.bufferTime
affecte uniquement la durée de mise en mémoire tampon des sons en flux continu imbriqués dans un fichier SWF. Elle n’a aucune incidence sur les objets Sound créés dynamiquement (autrement dit, créés dans ActionScript). La valeur de SoundMixer.bufferTime
ne peut pas remplacer ni définir la durée de mise en mémoire tampon par défaut spécifiée dans l’objet SoundLoaderContext qui est transmis à la méthode Sound.load()
.
Implémentation
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Eléments de l’API associés
soundTransform | propriété |
soundTransform:flash.media:SoundTransform
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Objet SoundTransform contrôlant les propriétés audio globales. Un objet SoundTransform comprend les propriétés de réglage du volume, du déplacement panoramique, ainsi que des haut-parleurs gauche et droit. L’objet SoundTransform utilisé dans cette propriété fournit des paramètres audio finaux qui sont appliqués à la totalité des sons après l’application de paramètres audio individuels.
Implémentation
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Eléments de l’API associés
useSpeakerphoneForVoice | propriété |
useSpeakerphoneForVoice:Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 3 |
Active/désactive le haut-parleur du téléphone lorsque le périphérique est en mode vocal. Par défaut, les téléphones intelligents utilisent l’écouteur du téléphone pour la sortie audio lorsque SoundMixer.audioPlaybackMode
est définie sur AudioPlaybackMode.VOICE
. La propriété useSpeakerphoneForVoice
permet de remplacer la sortie par défaut de sorte que vous puissiez implémenter le bouton d’un haut-parleur dans une application de téléphone. Cette propriété n’a pas d’effet dans les modes autres que AudioPlaybackMode.VOICE
. Dans les environnements de bureau et de télévision, cette propriété n’a aucun effet.
Remarque : sur iOS, si votre application a défini audioPlaybackMode=VOICE
et qu’une autre application effectue également la lecture en mode voix, vous ne pouvez pas définir useSpeakerphoneForVoice=true
.
Remarque : sous Android, vous devez définir android.permission.MODIFY_AUDIO_SETTINGS
dans le descripteur d'application AIR ou que la modification de cette valeur n'aura aucun effet. En outre, le paramètre est un réglage de périphérique global. Les autres applications qui s'exécutent sur le périphérique peuvent à tout moment modifier le paramètre de périphérique sous-jacent.
La valeur par défaut est false.
Implémentation
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Eléments de l’API associés
areSoundsInaccessible | () | méthode |
public static function areSoundsInaccessible():Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Détermine si des sons sont inaccessibles en raison de restrictions de sécurité. Par exemple, un son chargé à partir d’un domaine différent de celui du contenu appelant cette méthode est inaccessible si le serveur du son ne possède pas de fichier de régulation d’URL autorisant l’accès au domaine de ce domaine. Le son peut cependant être chargé et lu, mais les opérations de bas niveau, telles que l’extraction de métadonnées ID3 pour le son, ne peuvent pas être exécutées sur des sons inaccessibles.
Pour le contenu d’une application AIR dans le sandbox de sécurité de l’application, l’appel à cette méthode renvoie toujours false
. Tous les sons, y compris ceux chargés d’autres domaines, sont accessibles au contenu dans le sandbox de sécurité de l’application.
Boolean — Représentation de la chaîne de la valeur booléenne.
|
Eléments de l’API associés
computeSpectrum | () | méthode |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Génère un instantané de l’onde sonore actuelle et le place dans l’objet ByteArray spécifié. Les valeurs sont mises en forme comme des valeurs à virgule flottante normalisées allant de -1,0 à 1,0. L’objet ByteArray transmis au paramètre outputArray
est remplacé par de nouvelles valeurs. La taille de l’objet ByteArray créé est fixée à 512 valeurs à virgule flottante, les 256 premières représentant le canal gauche et les autres le canal droit.
Remarque : cette méthode est soumise aux restrictions relatives à la sécurité des fichiers locaux et aux restrictions concernant le chargement interdomaines. Si vous utilisez des fichiers locaux ou des sons chargés à partir d’un serveur appartenant à un autre domaine que le contenu appelant, vous devez peut-être contourner les restrictions liées au sandbox par le biais d’un fichier de régulation interdomaines. Pour plus d’informations, voir la description de la classe Sound. En outre, cette méthode ne permet pas d’extraire des données de flux RTMP, même si elle est appelée par un contenu résidant dans le même domaine que le serveur RTMP.
Cette méthode est prise en charge sur RTMP dans Flash Player 9.0.115.0 et versions ultérieures, ainsi que dans Adobe AIR. Vous pouvez contrôler l’accès aux flux sur un serveur FMS (Flash Media Server) dans un script coté serveur. Pour plus de détails, voir les propriétés Client.audioSampleAccess
et Client.videoSampleAccess
dans le Guide de référence du langage ActionScript d’Adobe Flash Media Server côté serveur.
Paramètres
outputArray:ByteArray — Objet ByteArray qui contient les valeurs associées au son. Si certains sons ne sont pas disponibles en raison des restrictions de sécurité (areSoundsInaccessible == true ), l’objet outputArray ne subit aucune modification. Si tous les sons sont arrêtés, l’objet outputArray est rempli de zéros.
| |
FFTMode:Boolean (default = false ) — Valeur booléenne indiquant si les données audio sont d’abord soumises à une transformation de Fourier. Lorsque ce paramètre correspond à true , la méthode renvoie un spectre de fréquences, plutôt que l’onde sonore brute. Dans le spectre de fréquences, les basses fréquences sont représentées sur la gauche et les hautes fréquences sur la droite.
| |
stretchFactor:int (default = 0 ) — Résolution des échantillons audio. Si vous réglez la valeur stretchFactor sur 0, les données sont échantillonnées à 44,1 KHz. Réglez-la sur 1 et elles sont échantillonnées à 22,05 KHz ; sur 2 et elles sont échantillonnées à 11,025 KHz, etc.
|
Eléments de l’API associés
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Exemple ( Comment utiliser cet exemple )
computeSpectrum()
est utilisée pour produire une représentation graphique des données d’ondes acoustiques.
Dans le constructeur, un fichier audio est chargé et défini sur lecture (il n’y a pas de gestion d’erreur dans cet exemple, et le fichier audio est supposé être dans le même répertoire que le fichier SWF). Cet exemple est à l’écoute de l’événement Event.ENTER_FRAME
pendant la lecture du son, ce qui déclenche de façon répétée la méthode onEnterFrame()
pour le traçage du graphique des valeurs de données audio. Lorsque la lecture d’un son est terminée, la méthode onPlaybackComplete()
arrête le processus de dessin en supprimant l’écouteur de l’événement Event.ENTER_FRAME
.
Dans la méthode onEnterFrame()
, la méthode computeSpectrum()
stocke le son brut dans l’objet tableau d’octets bytes
. Les données sont échantillonnées à 44,1 KHz. Le tableau d’octets contient 512 octets de données, chacun contenant une valeur à virgule flottante comprise entre -1 et 1. Les 256 premières valeurs représentent le canal gauche et les autres le canal droit. La première boucle for lit les 256 premières valeurs (canal stéréo gauche ) et trace chaque fois une ligne d’un point à l’autre via la méthode Graphics.lineTo()
(l’affichage du graphique vectoriel de l’onde acoustique est directement écrit dans l’objet Sprite de la classe). Les octets du son sont lus sous forme de nombre à virgule flottante 32 bits dans le flux d’octets et multipliés par la hauteur du point pour autoriser la plage verticale du graphique. La largeur est définie sur le double de la longueur du canal. La seconde boucle for lit les 256 valeurs suivantes (canal stéréo droit) et trace les lignes en ordre inverse. Les méthodes g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
et g.lineTo(0, PLOT_HEIGHT);
tracent la base des ondes. Le dessin de la courbe audio qui en résulte produit un effet miroir.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; import flash.text.TextField; public class SoundMixer_computeSpectrumExample extends Sprite { public function SoundMixer_computeSpectrumExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("Song1.mp3"); snd.load(req); var channel:SoundChannel; channel = snd.play(); addEventListener(Event.ENTER_FRAME, onEnterFrame); channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); } private function onEnterFrame(event:Event):void { var bytes:ByteArray = new ByteArray(); const PLOT_HEIGHT:int = 200; const CHANNEL_LENGTH:int = 256; SoundMixer.computeSpectrum(bytes, false, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x6600CC); g.beginFill(0x6600CC); g.moveTo(0, PLOT_HEIGHT); var n:Number = 0; for (var i:int = 0; i < CHANNEL_LENGTH; i++) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); g.endFill(); g.lineStyle(0, 0xCC0066); g.beginFill(0xCC0066, 0.5); g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); for (i = CHANNEL_LENGTH; i > 0; i--) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(0, PLOT_HEIGHT); g.endFill(); } private function onPlaybackComplete(event:Event):void { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } } }
stopAll | () | méthode |
public static function stopAll():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Arrête tout son en cours de lecture.
>Dans Flash Professional, cette méthode n’arrête pas la tête de lecture. Les sons diffusés en continu sont émis de nouveau lorsque la tête de lecture passe au-dessus des images les contenant.
Pour utiliser cette propriété, tenez compte du modèle de sécurité suivant :
- Par défaut, l’appel de la méthode
SoundMixer.stopAll()
arrête uniquement les sons se trouvant dans le même sandbox de sécurité que l’objet qui appelle la méthode. Les sons dont la lecture n’a pas été lancée à partir du sandbox de l’objet appelant ne sont pas arrêtés. - Lorsque vous chargez le son à l’aide de la méthode
load()
de la classe Sound, vous pouvez spécifier un paramètrecontext
qui est un objet SoundLoaderContext. Si vous réglez la propriétécheckPolicyFile
de l’objet SoundLoaderContext surtrue
, Flash Player ou Adobe AIR recherche un fichier de régulation interdomaines sur le serveur à partir duquel le son est chargé. Si le serveur dispose d’un fichier de régulation interdomaines qui autorise le domaine du contenu appelant, ce fichier peut arrêter le son chargé par le biais de la méthodeSoundMixer.stopAll()
; dans le cas contraire, il ne peut pas l’arrêter.
Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application
(contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.
Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).
Exemple ( Comment utiliser cet exemple )
stopAll()
est utilisée pour désactiver deux sons lus en même temps.
Dans le constructeur, deux fichiers audio différents sont chargés et définis sur la lecture. Le premier est chargé localement et attribué à un canal audio (ce fichier est supposé être dans le même répertoire que le fichier SWF). Le second fichier est chargé et diffusé en continu depuis le site d’Adobe. Pour utiliser la méthode SoundMixer.stopAll()
, tous les sons doivent être accessibles (un objet SoundLoaderContext peut être utilisé pour rechercher le fichier de régulation interdomaines). Chaque son doit également posséder un écouteur d’événement invoqué lorsqu’une erreur d’E/S survient lors du chargement du fichier audio. Un champ de texte muteButton
est également créé. Il écoute un événement de type clic, qui invoque la méthode muteButtonClickHandler()
.
Dans la méthode muteButtonClickHandler()
, si le contenu du champ de texte est « MUTE », la méthode areSoundsInaccessible()
vérifie que le mélangeur de sons a accès aux fichiers. Si les fichiers sont accessibles, la méthode stopAll()
interrompt les sons. Si le champ de texte est à nouveau sélectionné, la lecture du premier son commence et le contenu du champ de texte est à nouveau défini sur « MUTE ». Cette fois la méthode stopAll()
désactive le son en cours de lecture. Notez que la méthode stop()
du canal audio peut également être utilisée pour arrêter un son spécifique attribué au canal (pour utiliser la fonctionnalité du canal, le son doit être réaffecté à ce canal à chaque appel de la méthode play()
).
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.events.IOErrorEvent; public class SoundMixer_stopAllExample extends Sprite { private var firstSound:Sound = new Sound(); private var secondSound:Sound = new Sound(); private var muteButton:TextField = new TextField(); private var channel1:SoundChannel = new SoundChannel(); public function SoundMixer_stopAllExample() { firstSound.load(new URLRequest("mySound.mp3")); secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3")); firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler); secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler); channel1 = firstSound.play(); secondSound.play(); muteButton.autoSize = TextFieldAutoSize.LEFT; muteButton.border = true; muteButton.background = true; muteButton.text = "MUTE"; muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler); this.addChild(muteButton); } private function muteButtonClickHandler(event:MouseEvent):void { if(muteButton.text == "MUTE") { if(SoundMixer.areSoundsInaccessible() == false) { SoundMixer.stopAll(); muteButton.text = "click to play only one of sound."; } else { muteButton.text = "The sounds are not accessible."; } } else { firstSound.play(); muteButton.text = "MUTE"; } } private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
Tue Jun 12 2018, 09:30 AM Z