Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3-无声录音长度不同于音频录音_Actionscript 3_Flash_Audio - Fatal编程技术网

Actionscript 3 AS3-无声录音长度不同于音频录音

Actionscript 3 AS3-无声录音长度不同于音频录音,actionscript-3,flash,audio,Actionscript 3,Flash,Audio,我遇到了一个奇怪的问题,想知道是否有人知道发生了什么 在ActionScript3中,我使用麦克风录制了13秒的声音片段。 我将mic.setSilenceLevel设置为0,因此一直在对数据进行采样 单击开始启动计时器并从麦克风写入字节数据。 13秒后,计时器停止,我将数据写入byteArray,然后将其编码为mp3 如果我录制13秒的无音,mp3文件的长度为12.251秒。 如果我录制13秒的声音,mp3文件的长度为12.512秒 你知道为什么吗 mic.addEventListener(S

我遇到了一个奇怪的问题,想知道是否有人知道发生了什么

在ActionScript3中,我使用麦克风录制了13秒的声音片段。 我将mic.setSilenceLevel设置为0,因此一直在对数据进行采样

单击开始启动计时器并从麦克风写入字节数据。 13秒后,计时器停止,我将数据写入byteArray,然后将其编码为mp3

如果我录制13秒的无音,mp3文件的长度为12.251秒。 如果我录制13秒的声音,mp3文件的长度为12.512秒

你知道为什么吗

mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);

private function micSampleDataHandler(event:SampleDataEvent):void
{   

var bytesRecorded:uint = soundBytes.length;
while( event.data.bytesAvailable )
{
    var sample:Number = event.data.readFloat();
    if( bytesRecorded < VOLUME_INC_BYTES )
    {
        // using linear dependence, but of course you can use a different one
        var volume:Number = bytesRecorded / VOLUME_INC_BYTES;
        soundBytes.writeFloat(sample * volume);
        bytesRecorded += 4;
    }else
    {
        soundBytes.writeFloat(sample);
    }
}
}


private function stopRecord():void {

mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);

var START_BYTES:uint = 0;

soundBytes.position = 0;

soundBA.clear();
soundBA.position = 0;

//insert the .2 seconds of silence to the new sound at the beginning

    for (var i:int = 0; i<4096; i++) { 
    soundBA.writeFloat(0); 
    soundBA.writeFloat(0); 
    } 

soundBA.writeBytes(soundBytes, START_BYTES);

soundBA.position = 0;


}

真的这是一个非常微小的差异,它足够小,可以简单地将其作为启动和停止录制之间的延迟以及在硬件上实际执行的命令。这不是延迟,因为这两种录制类型创建一致的结果。i、 e.记录沉默总是记录12.251,声音总是12.512。所以。。。一致的结果对您来说意味着这不是延迟问题?如果我现在在无限循环上ping google,每次都会得到完全相同的毫秒响应。这是否意味着我的电脑和谷歌服务器之间没有延迟?一致性与延迟没有任何关系。