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

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 如何在时间轴上访问和获取MP3声音的振幅?_Actionscript 3_Flash_Amplitude - Fatal编程技术网

Actionscript 3 如何在时间轴上访问和获取MP3声音的振幅?

Actionscript 3 如何在时间轴上访问和获取MP3声音的振幅?,actionscript-3,flash,amplitude,Actionscript 3,Flash,Amplitude,我想得到在我的SWF中播放的mp3的振幅。问题是,它直接嵌入到时间线上 有没有什么方法可以让我在时间轴上看到正在播放的声音(通过ActionScript) 更新:为了更清晰,当声音被添加到舞台上时(从库拖动到舞台上),它似乎成为了框架的一个属性 任何导入的项目都可以在库中访问(ctrl+L或在顶部菜单栏的窗口下查找)) 在库中右键单击音频项的当前名称(将是类型:声音) 然后选择属性。在那里,您应该看到链接部分,因此勾选导出ActionScript 在现在可用的类框中,您现在可以放置自己的首选实

我想得到在我的SWF中播放的mp3的振幅。问题是,它直接嵌入到时间线上

有没有什么方法可以让我在时间轴上看到正在播放的声音(通过ActionScript)

更新:为了更清晰,当声音被添加到舞台上时(从库拖动到舞台上),它似乎成为了框架的一个属性


任何导入的项目都可以在
库中访问(ctrl+L或在顶部菜单栏的
窗口下查找)

库中
右键单击音频项的当前名称(将是
类型:声音
) 然后选择属性。在那里,您应该看到链接部分,因此勾选导出ActionScript

在现在可用的框中,您现在可以放置自己的首选实例名称(无空格),并将基类保留为flash.media.Sound(应该是这样)


替代解决方案:通过
computeSpectrum
获取振幅
对于上述解决方案不适用的任何情况,可选择仅使用
ComputeSpectrum
(它适用于所有音频,因为它绑定到
混音器
,而不仅仅是特定的声音对象)。这是一个作为出发点的例子(调整或研究更好的公式)

var n_RMS:Number=0;
var n_FFT:Number=0;
var max_AMP:Number=200;//满容量时的最大宽度或高度
var FFT_字节:ByteArray=新的ByteArray;
addEventListener(事件。输入帧,计算振幅);
函数计算振幅(evt:事件)
{
SoundMixer.computeSpectrum(FFT_字节,假,0);
for(var i:int=0;i<256;i++)//获取左通道FFT
{
n_FFT=FFT_字节。readFloat();
n_RMS=0.8*Math.sqrt(Math.abs(n_FFT))/0.434294481904;
}
mc_ampLeft.width=(n_RMS/2)*max_AMP;//更新左栏
对于(var j:int=0;j<256;j++)//获取正确的通道FFT
{
n_FFT=FFT_字节。readFloat();
n_RMS=0.8*Math.sqrt(Math.abs(n_FFT))/0.434294481904;
}
mc_amplright.width=(n_RMS/2)*max_AMP;//更新右栏
}

任何导入的项目都可以在
库中访问(ctrl+L或在顶部菜单栏的
窗口下查找)

库中
右键单击音频项的当前名称(将是
类型:声音
) 然后选择属性。在那里,您应该看到链接部分,因此勾选导出ActionScript

在现在可用的框中,您现在可以放置自己的首选实例名称(无空格),并将基类保留为flash.media.Sound(应该是这样)


替代解决方案:通过
computeSpectrum
获取振幅
对于上述解决方案不适用的任何情况,可选择仅使用
ComputeSpectrum
(它适用于所有音频,因为它绑定到
混音器
,而不仅仅是特定的声音对象)。这是一个作为出发点的例子(调整或研究更好的公式)

var n_RMS:Number=0;
var n_FFT:Number=0;
var max_AMP:Number=200;//满容量时的最大宽度或高度
var FFT_字节:ByteArray=新的ByteArray;
addEventListener(事件。输入帧,计算振幅);
函数计算振幅(evt:事件)
{
SoundMixer.computeSpectrum(FFT_字节,假,0);
for(var i:int=0;i<256;i++)//获取左通道FFT
{
n_FFT=FFT_字节。readFloat();
n_RMS=0.8*Math.sqrt(Math.abs(n_FFT))/0.434294481904;
}
mc_ampLeft.width=(n_RMS/2)*max_AMP;//更新左栏
对于(var j:int=0;j<256;j++)//获取正确的通道FFT
{
n_FFT=FFT_字节。readFloat();
n_RMS=0.8*Math.sqrt(Math.abs(n_FFT))/0.434294481904;
}
mc_amplright.width=(n_RMS/2)*max_AMP;//更新右栏
}

任何导入的项目都可以在
库中访问(ctrl+L或在顶部菜单栏的
窗口下查找)

库中
右键单击音频项的当前名称(将是
类型:声音
) 然后选择属性。在那里,您应该看到链接部分,因此勾选导出ActionScript

在现在可用的框中,您现在可以放置自己的首选实例名称(无空格),并将基类保留为flash.media.Sound(应该是这样)


替代解决方案:通过
computeSpectrum
获取振幅
对于上述解决方案不适用的任何情况,可选择仅使用
ComputeSpectrum
(它适用于所有音频,因为它绑定到
混音器
,而不仅仅是特定的声音对象)。这是一个作为出发点的例子(调整或研究更好的公式)

var n_RMS:Number=0;
var n_FFT:Number=0;
var max_AMP:Number=200;//满容量时的最大宽度或高度
var FFT_字节:ByteArray=新的ByteArray;
addEventListener(事件。输入帧,计算振幅);
函数计算振幅(evt:事件)
{
SoundMixer.computeSpectrum(FFT_字节,假,0);
for(var i:int=0;i<256;i++)//获取左通道FFT
{
n_FFT=FFT_字节。readFloat();
n_RMS=0.8*Math.sqrt(Math.abs(n_FFT))/0.434294481904;
}
mc_ampLeft.width=(n_RMS/2)*max_AMP;//更新左栏
对于(var j:int=0;j<256;j++)//获取正确的通道FFT
{
//assuming you have.. my_Audio ..as Linkage Class name
var mySound:Sound = new my_Audio();
var myChannel:SoundChannel = new SoundChannel();

myChannel = mySound.play();

addEventListener(Event.ENTER_FRAME, show_Amplitude);

function show_Amplitude(evt:Event)
{
  // where 200 is your own number for the maximum width or height of amplitude bars
  mc_ampLeft.width  = myChannel.leftPeak  * 200;
  mc_ampRight.width = myChannel.rightPeak * 200;
}
var n_RMS   :Number = 0;
var n_FFT   :Number = 0;
var max_AMP :Number = 200; // max width or height of bar at full volume
var FFT_bytes:ByteArray = new ByteArray;

addEventListener(Event.ENTER_FRAME, compute_Amplitude);

function compute_Amplitude(evt:Event)
{
    SoundMixer.computeSpectrum( FFT_bytes, false, 0 );

    for (var i:int = 0; i < 256; i++) //GETS LEFT CHANNEL FFT
    {
        n_FFT = FFT_bytes.readFloat();
        n_RMS = 0.8 * Math.sqrt( Math.abs(n_FFT) ) / 0.434294481904;
    }
        mc_ampLeft.width = (n_RMS /2) * max_AMP; //update LEFT bar

    for (var j:int = 0; j < 256; j++) //GETS RIGHT CHANNEL FFT
    {
        n_FFT = FFT_bytes.readFloat();
        n_RMS = 0.8 * Math.sqrt( Math.abs(n_FFT) ) / 0.434294481904;
    }
        mc_ampRight.width = (n_RMS /2) * max_AMP; //update RIGHT bar
}