我正在开发一个模拟鼓组的桌面 AIR 应用程序。按下键盘会在应用程序中播放相应的鼓声。我已经在应用程序中放置了音符,因此用户将尝试播放特定的歌曲。
现在我想录制整个表演并将其导出为视频文件,比如 flv。我已经使用这个编码器成功录制了视频:
http ://www.zeropointnine.com/blog/updated-flv-encoder-alchem/
但是,此编码器不具备自动录制声音的能力。我需要找到一种方法来获取ByteArray
特定帧的声音,并将其传递给编码器。每帧可能Sound
同时播放不同的对象,所以我需要获取最终声音的字节。
我知道SoundMixer.computeSpectrum()
可以以字节为单位返回当前声音。但是ByteArray
返回的长度固定为512,不符合编码器的要求。经过一番测试,采样率为 44khz 8 位立体声,编码器期望音频字节数据数组的长度为 5880。返回的数据SoundMixer.computeSpectrum()
比编码器所需的要短得多。
我的应用程序以 60FPS 的速度运行,并以 15FPS 的速度录制。
所以我的问题是:有什么方法可以获得当前帧中的音频字节,它由多个Sound
对象混合,并且数据长度足以让编码器工作?如果没有 API 可以做到这一点,我将不得不自己混合音频并获取结果字节,该怎么做?