gpt4 book ai didi

flash - AS3-声音提取到bytearray-进度处理程序

转载 作者:行者123 更新时间:2023-12-03 01:03:38 25 4
gpt4 key购买 nike

我正在使用以下内容从声音对象中提取声音数据,并将其存储在字节数组中。

我要求在前进之前将整个mp3加载到字节数组中,以下为此可以正常工作,但是在提取数据时flash会暂时挂起(2.4mb mp3)

有什么方法可以阻止它挂起吗,即使用事件监听器检查提取过程的进度?

iniSound();

function iniSound()
{
playLoadedSound(mp3);
}

function playLoadedSound(s:Sound):void
{
var bytes:ByteArray = new ByteArray();
s.extract(bytes, int(s.length * 44.1));
playSound(bytes);
}

function playSound(bytes:ByteArray)
{
//stop();
dynamicSound = new Sound();
dynamicSound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);

loadedMP3Samples = bytes;
numSamples = bytes.length / 8;

phase = 0;
}

最佳答案

这种方式通常对我有用

function playLoadedSound (s:Sound) : void
{
var bytes:ByteArray = new ByteArray ();
s.extract (bytes, int (s.length * 44.1));
playSound (s);
}

function playSound (bytes:ByteArray) : void
{
loadedMp3Samples = bytes;
loadedMp3Samples.position = 0; // reset position

dynamicSound = new Sound ();
dynamicSound.addEventListener (SampleDataEvent.SAMPLE_DATA, onSampleData);
dynamicSound.play ();
}

function onSampleData (event:SampleDataEvent) : void
{
for (var i:int ; i < 8192 && loadedMp3Samples.available > 0 ; i++)
{
var left:Number = loadedMp3Samples.readFloat ();
var right:Number = loadedMp3Samples.readFloat ();
event.data.writeFloat (left);
event.data.writeFloat (right);
}
}

关于flash - AS3-声音提取到bytearray-进度处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com