Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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 ByteArray to Vector=AS3 RangeError:Error#2004:其中一个参数无效_Actionscript 3_Audio_Mp3_Extract_Fft - Fatal编程技术网

Actionscript 3 ByteArray to Vector=AS3 RangeError:Error#2004:其中一个参数无效

Actionscript 3 ByteArray to Vector=AS3 RangeError:Error#2004:其中一个参数无效,actionscript-3,audio,mp3,extract,fft,Actionscript 3,Audio,Mp3,Extract,Fft,我试图在不播放mp3的情况下从mp3中提取fft数据。我使用的是AS3和CS5。我发现了一个很棒的实时频谱分析仪,但它只适用于麦克风。我还发现了一个很棒的mp3活页夹,我用它来提取声音。我基本上是在尝试合并在这两个链接中找到的源代码。我在将mp3样本中的byteArray数据读入用于进行fft的向量时,得到了一个Range错误。mp3数据是立体声的,所以我除以8(左声道4字节,右声道4字节)。它可以很好地读取循环并跟踪正确的数据,但当它到达末尾时,我会得到错误,即使循环设置为只执行一次。任何和所

我试图在不播放mp3的情况下从mp3中提取fft数据。我使用的是AS3和CS5。我发现了一个很棒的实时频谱分析仪,但它只适用于麦克风。我还发现了一个很棒的mp3活页夹,我用它来提取声音。我基本上是在尝试合并在这两个链接中找到的源代码。我在将mp3样本中的byteArray数据读入用于进行fft的向量时,得到了一个Range错误。mp3数据是立体声的,所以我除以8(左声道4字节,右声道4字节)。它可以很好地读取循环并跟踪正确的数据,但当它到达末尾时,我会得到错误,即使循环设置为只执行一次。任何和所有的帮助都将不胜感激。这是我用来将数据移动到向量中的代码

    public function readMp3(): void {

        for (var i:int = 0; i < byteArray.length/8; i++) {

            byteArray.position = i;

            /*
              m_buf is fed into the updateSpectrum function in 
              the Sound Analyzer
            */
            m_buf[i] = byteArray.readFloat();
            trace (m_buf[i]);
        }
    }
公共函数readMp3():void{
for(变量i:int=0;i

谢谢

除以2而不是8。byteArray是右,左,右,左。。。。长度为512,如果我没记错的话256X256不确定数字自从我使用声音功能已经有3年了;当你读float时,我认为它会自动递增,但不要引用我的话。实际上你忘记了你必须根据用于生成byteArray的采样率进行除法。谢谢你的快速响应!这非常有帮助——2004年的错误已经消失了。然而,我现在遇到了一个#2030年的文件结尾。除以4是最好的解决方案(我可以看到)。这使其他一切都顺利进行。不过,我将研究采样率是如何影响这一点的。谢谢更正我最后的评论。除以8是最好的解决方案,因为我需要将立体声转换为单声道,方法是将左右采样相加,然后除以2得到平均值。如果mp3是单声道的,那么除以4最好。除以2不是8。byteArray是右,左,右,左。。。。长度为512,如果我没记错的话256X256不确定数字自从我使用声音功能已经有3年了;当你读float时,我认为它会自动递增,但不要引用我的话。实际上你忘记了你必须根据用于生成byteArray的采样率进行除法。谢谢你的快速响应!这非常有帮助——2004年的错误已经消失了。然而,我现在遇到了一个#2030年的文件结尾。除以4是最好的解决方案(我可以看到)。这使其他一切都顺利进行。不过,我将研究采样率是如何影响这一点的。谢谢更正我最后的评论。除以8是最好的解决方案,因为我需要将立体声转换为单声道,方法是将左右采样相加,然后除以2得到平均值。如果mp3是单声道的,那么除以4就最好了。