actionscript-3 - 如何从AS3中的麦克风字节数组播放声音?

标签 actionscript-3 audio bytearray playback microphone

我正在尝试播放从麦克风捕获的ByteArray发出的声音,并且希望听到来自麦克风的声音,但是我得到的只是随机的失真声音。这是我现在正在使用的代码:

var playBa:ByteArray;

var player:Sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, playMic);
sound.play();

var mic:Microphone = Microphone.getMicrophone();
mic.gain = 100;
mic.rate = 44;
mic.setSilenceLevel(0, 4000);
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, onMicSample);

function playMic(e:SampleDataEvent):void
{
    if (playBa != null) e.data.writeBytes(playBa, 0, playBa.length);
}

function onMicSample(e:SampleDataEvent):void
{
    playBa = e.data;
    playBa.position = 0;
    player.play();
}

几秒钟的声音失真之后,这就是我在“输出”窗口中看到的内容:
RangeError: Error #2004: One of the parameters is invalid.
at flash.media::Sound/play()
at vclass_fla::MainTimeline/onMicSample()

请帮我。我是AS3和此处的新手。任何帮助都将受到高度赞赏。谢谢。

最佳答案

有些麦克风非常敏感。您需要调整适度的设置,如下所示。另外,如果扬声器离麦克风更近,声音也会循环播放。

var myMic:Microphone = Microphone.getMicrophone(); // detect microphone
myMic.gain = 50;
myMic.setUseEchoSuppression(true);
myMic.setLoopBack(true);
myMic.setSilenceLevel(50, 1000);

要进一步了解声音捕捉,请尝试以下操作:
Capturing microphone sound data

关于actionscript-3 - 如何从AS3中的麦克风字节数组播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929872/

相关文章:

serialization - JSON.NET 中的字节数组序列化

java - 从字节数组创建文件

actionscript-3 - 从 Flex 应用程序 (Web) 复制图像并将其粘贴到应用程序外部

android - 哪个Android手机支持FEATURE_AUDIO_PRO?

apache-flex - 为什么 writeUTFBytes 会弄乱非英文字符?

ios - 如何在ios中播放.opus音频文件

javascript - 音频标签中的原始缓冲区数据播放

interface - 将任意 Golang 接口(interface)转换为字节数组

actionscript-3 - AS3 PNG编码器?

html - 如何在不降低帧率的情况下在 Flash 内容之上启用 HTML 内容?