Java 无法将字节数组转换为音频AAC文件

Java 无法将字节数组转换为音频AAC文件,java,spring-boot,audio,byte,audio-streaming,Java,Spring Boot,Audio,Byte,Audio Streaming,我正在努力寻找将字节数组写入可播放的AAC音频文件的解决方案 从前端开始,我将.aac音频文件编码为UInt8List列表,并将其发送到Spring引导服务器。然后,我可以将它们转换为适当的字节数组,然后尝试将其写回.aac文件,如下所示: public void writeToAudioFile(ArrayList audioData){ 字节[]字节数组=新字节[1024]; 迭代器迭代器=audioData.Iterator(); 系统输出打印LN(byteArray); while(it

我正在努力寻找将字节数组写入可播放的AAC音频文件的解决方案

从前端开始,我将
.aac
音频文件编码为UInt8List列表,并将其发送到Spring引导服务器。然后,我可以将它们转换为适当的字节数组,然后尝试将其写回
.aac
文件,如下所示:

public void writeToAudioFile(ArrayList audioData){
字节[]字节数组=新字节[1024];
迭代器迭代器=audioData.Iterator();
系统输出打印LN(byteArray);
while(iterator.hasNext()){
//出于某种原因,我的单子是双打单子
//所以我要确保将这些值返回到int
整数i=迭代器.next().intValue();
byteArray[i]=i.字节值();
}
试一试{
File someFile=新文件(“test.aac”);
FileOutputStream fos=新的FileOutputStream(someFile);
fos.write(byteArray);
fos.flush();
fos.close();
System.out.println(“创建的文件”);
}捕获(例外e){
//TODO:处理异常
System.out.println(“错误:+e”);
}
我可以将字节数组写回音频文件,但它是无法播放的。所以我想知道这种方法是否可行,我的问题是否用Java列出

我一直在做一些无关的研究,我想我需要说这个文件是一种媒体文件。或者可能是编码的音频文件已经损坏到我的服务器中。

您的转换循环

while(iterator.hasNext()){
//出于某种原因,我的单子是双打单子
//所以我要确保将这些值返回到int
整数i=迭代器.next().intValue();
byteArray[i]=i.字节值();
}
从迭代器中获取值
i
,然后尝试将其写入
byteArray
中的位置
i
,这会以一种奇怪的方式混淆音频字节

List
转换为
byte[]
的工作函数如下所示

byte[]输入字节(列出音频数据){
字节[]结果=新字节[audioData.size()];
对于(int i=0;i
然后您可以在
writeToAudioFile()中使用它:

void writeToAudioFile(ArrayList audioData){
try(FileOutputStream fos=newfileoutputstream(“test.aac”)){
fos.写入(输入字节(音频数据));
System.out.println(“创建的文件”);
}捕获(例外e){
//TODO:处理异常
System.out.println(“错误:+e”);
}
}
如果您在
audioData
中有有效的字节,这当然会生成可播放的文件。内容和扩展名应该足以让操作系统/播放器识别格式

如果这不起作用,我会查看收到的数据是否正确