Comment jouer le son au format MP3 à partir de la mémoire tampon (ByteArray/Stream) en ActionScript 3?
Donc.. j'ai un tampon contenant des données MP3 (Si je veux sauver cette mémoire tampon et de l'appeler de la mémoire tampon.mp3, il jouera, mais dans cette situation, je ne devrait pas enregistrer de fichiers système). J'ai jouer, mais je ne peux pas, que dois-je faire?
J'ai essayé le code suivant à jouer que buffrer(ByteArray\Stream) (je vous en MP3 de données à partir du serveur de la méthode d'obtention des données fonctionne très bien (testé sur le texte int, etc) j'ai appeler le retour de l'objet ByteArray readResponse parce que j'ai des seading méthode et Il est, c'est la réponse).
protected function Play(event:MouseEvent):void
{
var mySound:Sound = new Sound();
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA, soundFill);
mySound.play();
}
public function soundFill(event:SampleDataEvent):void
{
event.data.writeBytes(readResponse.buffer, 0, readResponse.buffer.length);
}
- Ce fil pourrait être utile stackoverflow.com/questions/1553563/...
Vous devez vous connecter pour publier un commentaire.
Celui-ci ne fonctionne pas depuis SampleDataEvent.les données s'attend au format raw des données de l'échantillon, pas MP3. Utilisation http://wiki.github.com/claus/as3swf/play-mp3-directly-from-bytearray à la place.
Je ne pense pas qu'il y est une solution de mp3 de données binaires, mais si c'est un wav un, alors cela devrait fonctionner:
N'oubliez pas de supprimer wav en-tête de données d'échantillonnage bien. Aussi, il ne fonctionne bien que lorsque le taux d'échantillonnage est de 44,1 kHz. Pour les autres taux d'échantillonnage, vous devez manuellement répéter ou de prélever des échantillons pour le rendre 44,1 kHz-comme. Faire payer l'attention sur les sons en mono, comme vous avez besoin de fournir à la fois à gauche & canal droit des échantillons de Flash, donc besoin de répéter les échantillons.
Bon point de départ est WavDecoder classe à l'intérieur de Popforge audio.format.wav paquet.
La suivante fonctionne pour moi:
Vous pourriez avoir besoin pour vérifier ce qui est stocké dans votre readResponse ByteArray ou comment les données sont lues une fois que vous avez la charge. Assurez-vous qu'il est chargé de la URLLoader à l'aide de URLLoaderDataFormat.BINAIRE ou tout simplement à l'aide d'un URLStream comme je l'ai fait ici.