Come faccio a creare un lettore musicale in Flash che crea una forma d'onda del file audio?

StackOverflow https://stackoverflow.com/questions/2078545

  •  21-09-2019
  •  | 
  •  

Domanda

Io ho tre screenshot di seguito di lettori audio basati su Flash su vari siti web che disegnano una forma d'onda della clip che sta per giocare e si muove lungo durante la riproduzione e anche consentendo all'utente di cliccare su un punto l'audio il file e salta a quel punto.

DJ Scarica lettore musicale da http://www.djdownload.com

DJ Scarica Music Player http://img13.imageshack.us/img13/6739 /djdownloadmusicplayer.png

lettore musicale SoundCloud da http://www.soundcloud.com

SoundCloud Music Player http://img5.imageshack.us/img5/6336/ soundcloudmusicplayer.png

lettore musicale TrackItDown da http://www.trackitdown.net

TrackItDown Music Player http://img697.imageshack.us/img697/7392/ trackitdownmusicplayer.png

ho pochissima conoscenza di Flash, ma è questo facile da raggiungere? Vorrei mostrare solo il file Flash un mp3 e richiama la forma d'onda. Capisco che questo potrebbe essere abbastanza intenso sulla CPU in modo ci sarebbe un modo di caching dei dati delle forme d'onda in modo che non ridisegnare ogni volta che il file viene caricato?

È stato utile?

Soluzione

Non ho mai fatto io stesso prima, ma per quanto ne so la situazione è la seguente.

Se si lavora con Flash Player 10 il tuo fortunati, altrimenti sembrerebbe che si deve calcolare lo spettro come il suono viene riprodotto. Come nel collegamento di Chris è possibile ottenere i dati audio fuori l'oggetto suono in un ByteArray con Sound.extract() (FP10 solo). Si prosegue poi attraverso la ByteArray leggere i valori e disegnare qualcosa sullo schermo in base ai valori.

In FP9 si dovrà riprodurre l'audio attraverso un SoundChannel e leggere i picchi sinistro e destro dal canale come si gioca. Ho trovato questo codice di esempio per questo ( link )

var snd:Sound = new Sound();
var req:URLRequest = new URLRequest("your track url");
var channel:SoundChannel;
var bytes:ByteArray = new ByteArray();

snd.load(req);
this.addEventListener(Event.ENTER_FRAME, enterFrameEvent);
channel = snd.play(0,3);    

function enterFrameEvent(event:Event):void  {
    SoundMixer.computeSpectrum(bytes, true,0);
    // bytes has 512 values 0-255 leftchannel 256-512 right channel
    for (var i:Number = 0; i < 256; i++) {
        val = bytes.readFloat();
    }
}

Così, in breve cercare di attenersi a FP10 e se siete in grado di farlo (nessuna restrizione client) si dovrebbe essere in grado di prendere la classe Waveform direttamente dal collegamento di Chris e usare quella. Sembra che la classe richiama anche la forma d'onda attuale (in cima estrarre i dati audio), ma è possibile spostare il disegno di essa la propria classe o modificare il codice per ottenere il proprio tipo di look per la forma d'onda.

Altri suggerimenti

Non ho provato, ma una ricerca su Google per "AS3 forma d'onda", ha rivelato questo post del blog (contiene un link ad un codice sorgente)

http://blog.efnx.com/flash- actionscript-3-waveform generazione classe /

Questa voce bordo Flashkit fornisce anche una serie di risorse molto interessanti:

Il modo in cui le illustrazioni nei tuoi esempi sono generati è più o meno come segue:

capire quanti secondi di audio per pixel del display larghezza.

Per ogni pixel andando da sinistra a destra, calcolare l'ampiezza media RMS del corrispondente segmento del file.

Questo vi dà l'altezza di picco per quel pixel. In alcuni degli schermi è reso simmetrico (cioè. È speculare dall'alto in basso), e in altri è presentata stile grafico a barre.

(a proposito, è facile vedere dai display di ampiezza che vengono prodotti in modo digitale, musica techno probabile di qualche tipo)

Chris - grazie per il collegamento al mio blog e qui è la fonte di quella classe (solo per rendere più facile). Io non sono del tutto sicuro di quello stato che il codice è in, come ho scritto 2 anni fa, al momento della stesura di questo, ma dovrebbe ottenere il lavoro fatto per chiunque altro ne abbia bisogno.   http://efnx.com/lab/WavePlotter/src/WavePlotter_Main_081024. src.tar.gz

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top