arrays - 原始声音 byteArray 到 float Array

标签 arrays audio apache-flex actionscript

我正在尝试将声音对象的 byteArray 转换为带有 float 的数组。声音对象可以很好地全长播放,但是我从中获得的 float 组被切断(但听起来是正确的),所以我在转换中一定做错了什么:

var s:Sound = mySound;
s.play(); // plays fine

var bytes:ByteArray = new ByteArray();
bytes.endian = Endian.LITTLE_ENDIAN;
s.extract(bytes, s.bytesTotal, 0);

var leftChannel:Array = new Array();
var rightChannel:Array = new Array();

bytes.position = 0;

while (bytes.bytesAvailable)
{
    leftChannel.push(bytes.readFloat());
    rightChannel.push(bytes.readFloat());
}

这就是我得到的:

alt text

顶部的两个 channel 是原始声音对象。 下面两个是 float 组数据。我将它们对齐,这样您就可以看到开头被切断,并且显然长度不正确。

感谢您的回答...

最佳答案

好吧,有两个问题:

  1. 我导入的 mp3 文件因某种原因损坏,导致开头部分被切断
  2. 我定义的提取长度不正确,要查找完整的声音长度,请使用

var numTotalSamples:Number = int(s.length * 44.1); //assuming 44.1kHz sample rate

然后:

s.extract(bytes, numTotalSamples, 0);

关于arrays - 原始声音 byteArray 到 float Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380849/

相关文章:

javascript - Javascript-我可以一次更改所有音频元素的音量吗?

file - 新的音频文件格式

apache-flex - 通过地址而不是坐标添加谷歌地图标记?

apache-flex - 如何从代码中将图表高度和宽度更改为 100%?

javascript - 如何在 JavaScript 中插入二维数组的第二维?

求和的 Python 多重处理

java - 仅对数组中的偶数进行排序,并且不碰奇数

java - 使用 GSON 解析 Ajax 请求中的 JSON 数组

swift - 如何在表格 View 单元格中添加一个按钮,该按钮在每行上快速播放不同的声音文件

apache-flex - AS3 : Detect Read-Only Properties