我正在尝试将以下16位WAV标头数据写入16位字节阵列。有谁知道如何实现这一目标?我正在使用动作3。
52 49 46 46 54 00 13 00 57 41 56 45 62 65 78 74 5A 02
我正在做的是尝试将正确的bytearray传递给这个mp3编码器(http://code.google.com/p/flash-kikko/)以使其写出一个mp3。如果我使用他们的例子,我可以通过filereference打开一个16位WAV文件,并将该bytearray传递给编码器以导出mp3。但是,我想创建自己的bytearray并传入它并创建mp3。使用HxD,我复制了同一个16位WAV文件的页眉和页脚,并将其作为bytearray粘贴到flash中,但是当我将它传递给编码器时,它会冻结编译并出现以下错误:
Error #1502: A script has executed for longer than the default timeout period of 15 seconds.
所以,我认为我的问题在于我如何格式化我传入的bytearray ...任何想法?再次感谢您的帮助!
答案 0 :(得分:3)
我假设你想要所有18个字节(你的问题是16位)?
var byteArray:ByteArray = new ByteArray();
byteArray.writeByte(0x52);
byteArray.writeByte(0x49);
byteArray.writeByte(0x46);
等。只需按照剩下的15个字节的模式。
您显示的两个数字中的每一个,例如“5A”实际上表示十六进制的字节。需要0x来告诉Flash你正在使用十六进制值 - 否则,AS3会认为你正在使用十进制值。
答案 1 :(得分:3)
为什么不自动完成繁琐的工作...
var header:String = "52 49 46 46 54 00 13 00 57 41 56 45 62 65 78 74 5A 02";
var headerParts:Array = header.split(" ");
var bytes:ByteArray = new ByteArray();
for each (var s:String in headerParts)
{
bytes.writeByte(parseInt(s, 16));
}
现在字节包含您的标题。