【发布时间】:2021-04-27 21:13:40
【问题描述】:
我在 android studio 中使用 Java 来编写我的应用程序。我有一个音频文件的文件路径(.wav 格式),将 .wav 文件读入字节数组的最佳方法是什么? 我正在使用以下转换方法:
public void open_audio_file(Uri filePath){
try{
in = new BufferedInputStream(getContext().getContentResolver().openInputStream(filePath));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0)
{
out.write(buff, 0, read);
}
out.flush();
}catch(Exception e){
throw new RuntimeException(e);
}
//Todo : Change the audio file to a float pointer
audioBytes = out.toByteArray();
Log.i(LOG_TAG,"The audio file is " + audioBytes.toString());
}
但是,这种方法会产生很多我的函数无法读取的行话值。例如,dog.wav www.beaniebestbuy.com/sounds/dog5.wav 的输出是 [B@d25663f 。数组的开头附加了行话值。
更新 1:我尝试使用 AudioSystem 库,但 Android Studio 不支持它。
【问题讨论】:
-
@Jason 不是真的,我正在尝试将其转换为字节数组,但是,有一些与输出相关的行话值。例如,(dog.wav)[www.beaniebestbuy.com/sounds/dog5.wav]转换后,第一个值为:[B@d25663f.
-
[B@d25663f是数组的toString(),[B表示是字节数组,d25663f是数组(身份)哈希码的十六进制形式。我不确定你希望audioBytes.toString()做什么。 -
@MarkRotteveel,第一个答案验证了我所做的事情是正确的。感谢您的补充说明。
标签: java android tensorflow