2010-07-03 10 views
1

Je suis intéressé par l'apprentissage de la décodification et de la lecture audio dans ActionScript 3. Je comprends comment écrire des octets sur un objet Sound à l'aide de l'événement SAMPLE_DATA, donc ce n'est pas vraiment un problème. Ce que je veux comprendre, c'est comment je pourrais mettre en œuvre des formats audio alternatifs pour la lecture native dans Flash Player.Décodage de la lecture audio/audio (AS3)

Je suppose que ce que je demande est: comment puis-je prendre quelque chose au format X et le "convertir/décoder" au format WAV et écrire les octets à un objet Sound, en lisant l'audio? Je suis intéressé par l'écriture d'un décodeur pour l'audio FLAC et éventuellement l'audio OGG, car ceux-ci semblent être parmi les formats audio open source les plus utilisés.

Quelqu'un peut-il me donner des conseils à ce sujet?

Répondre

2

Si vous voulez écrire un décodeur, la première chose que vous devriez probablement regarder est la spécification du format que vous voulez décoder.

La spécification ogg/vorbis peut être trouvée ici: http://xiph.org/vorbis/doc/Vorbis_I_spec.html.

En outre, il pourrait être utile de jeter un coup d'œil (ou peut-être porter) une autre bibliothèque open source qui le fait déjà (je ne connais aucun écrit en Actionscript), comme ceci, en Java: http://www.jcraft.com/jorbis/ (Je ne connais pas cette librairie, je viens de la trouver sur googling "ogg vorbis open source".)

De toute façon, il va falloir mettre du travail pour le faire fonctionner et je ne veux pas dire ça pour vous décourager, mais je ne suis pas sûr qu'Actionscript soit assez rapide pour un décodage audio en temps réel

+0

"Je ne suis pas sûr qu'Actionscript soit assez rapide pour un décodage audio en temps réel" ... et non moi. – spender

+0

Décodez-le d'abord, puis relisez-le, ou peut-être ne décoderez qu'un tampon et décoderez lentement pendant la lecture. –

+0

@ M28. Oui, décoder en jouant était ce que je voulais dire par "décodage audio en temps réel". Je doute que AS soit assez rapide, comme je l'ai dit, mais j'ai peut-être tort.D'un autre côté, décoder le tout d'avance n'est pas toujours une option; et aussi, j'ai l'impression que ça prendrait du temps (et que tu devrais utiliser des "fils verts", ce qui le rendra plus lent). –

1

Vous pouvez essayer, mais vous n'aurez plus beaucoup à faire pour faire autre chose. Avant Flash 10, j'ai écrit un article détaillant un hack to feed PCM data into sound output in Flash. Quelqu'un est entré en contact parce qu'ils avaient écrit un décodeur AS3 Ogg, mais ... même après avoir complètement optimisé le code, il a été constaté que AVM2 n'est vraiment pas à la hauteur du travail. Fondamentalement, c'est plutôt lent et le décodage d'OGG est très gourmand en processeur. Je ne peux pas voir que les choses auront tellement changé dans les années qui ont suivi, car les processeurs sont devenus "plus larges" et pas vraiment beaucoup plus rapides. ActionScript est à un seul thread, vous ne pouvez donc pas transférer vers un autre core.

Probablement la peine de vérifier this ... peut-être que la performance s'est améliorée. EDIT: Ayant dit tout cela, comme l'a dit Juan, ne soyez pas découragés par cette réponse. Je suppose que les exigences de calcul du décodage FLAC sont probablement bien inférieures à OGG, et si DSP vous excite, prendre le temps de comprendre tout cela vaut 100%, même si la route Flash (peut-être) conduit à la déception. Personnellement, je pense que le MediaStreamSource pour Silverlight semble vraiment prometteur, mais n'a pas vraiment beaucoup trempé.

+0

Laissez-moi vous dire que c'était un super bidouillage .Je me souviens d'avoir joué avec un projet de mixage audio sur lequel je travaillais à l'heure (bien que l'utilisateur résultant ait généré des données brutes audio était trop grand pour être pratique tal pour l'envoyer au serveur et l'écriture d'un encodeur MP3 était hors de ma ligue; J'ai fini par envoyer les "données de mixage" dans un format midi et laisser le serveur faire le mixage audio réel. Mais c'était très amusant de travailler avec. +1 pour ça! (un aussi pour une bonne réponse). –

+0

@Juan ... Merci. Découvrir comment faire la recette secrète d'André Michelle était certainement le plus amusant que j'ai jamais eu avec Flash. – spender