Внутренний микрофонный звонок - PullRequest
0 голосов
/ 18 января 2011

Как вы называете встроенный в компьютер микрофон для включения при посещении пользователем сайта?Я слышал, что есть несколько способов сделать это, но я хотел бы получить несколько советов о том, как лучше всего.

Чтобы обеспечить представление на метауровне, я планирую выбрать микрофонподнимите шум и отобразите его как графический эквалайзер (своего рода), но не записывайте его.

Код приветствуется!

Ответы [ 3 ]

1 голос
/ 18 января 2011

Вот пример Java-апплета , который читает с микрофона.

1 голос
/ 29 июня 2011

Для моего флеш-микрофона я использую этот класс

import org.bytearray.micrecorder.MicRecorder;

import org.bytearray.micrecorder.encoder.WaveEncoder;import org.bytearray.micrecorder.events.RecordingEvent;

(просто Google, чтобы получить код), и это просто, просто позвонив по этому номеру

            recorder = new MicRecorder(new WaveEncoder(),null,75,16);
    recorder.addEventListener(RecordingEvent.RECORDING, onRecording)
    recorder.addEventListener(Event.COMPLETE, onRecordComplete)

, тогда вы можете сделать что-то подобное, чтобы визуализировать изменение шума микрофона.Вы, конечно, должны сделать свой собственный видеоклип .fla, который будет отображать «звук», однако вы хотите его визуализировать

public function onRecording(e:RecordingEvent)
{           
    var al:Number = recorder.microphone.activityLevel;
    TweenMax.to(soundMeter, .1, {scaleX:al * .01, onUpdate:onActivitylevelUpdate});//, onUpdateParams:[al]})
}       
public function onActivitylevelUpdate()
{
    xpos = speedX;
    ypos = centerY + Math.sin(angle) * amplitude
    angle += speedAngle;
    graphics.lineTo(xpos,ypos)
}
0 голосов
/ 18 января 2011

Вы хотите взглянуть на класс Микрофон , чтобы получить звук с микрофона, и на метод computeSpectrum () , чтобы вычислить значения частоты для эквалайзера.

Вот пример того, что вы пытаетесь сделать, из примеров Adobe:

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);
    }
}}
...