首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中将音频转换为字节数组后,实际存储的内容是什么?

在java中将音频转换为字节数组后,实际存储的内容是什么?
EN

Stack Overflow用户
提问于 2013-03-12 12:41:38
回答 1查看 1.1K关注 0票数 5

实际上,我正在使用LSB替换算法实现音频隐写。我使用以下代码将音频转换为字节数组:

代码语言:javascript
运行
复制
    File src = new File("C:\\test.wav");
    AudioInputStream ais = AudioSystem.getAudioInputStream(src);
    byte[] data = new byte[ais.available()];
    int n = ais.read(data);

现在问题是这个音频文件是一个16位的采样长度,双声道和LittleEndian;我使用"isBigEndian()“函数检查了这一点。因此,我想知道样本是如何存储在字节数组中的,以便知道要替换哪些位。

EN

回答 1

Stack Overflow用户

发布于 2013-03-12 13:09:50

如何将音频转换为字节数组?

实际存储的是一个样本数组。如果你有一个干净的特定频率的单音,你会得到一个遵循正弦曲线的数组。下面是一个完美正弦波的例子:

127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,186,189,192,194,197,200,202,205,207,209,212,214,216,218,221,223,225,227,229,230,232,234,235,237,239,240,241,243,244,245,246,247,248,249,250,250,251,252,252,253,253,253,253,253,254,253,253,253,253,253,252,252,251,250,250,249,248,247,246,245,244,243,241,240,239,237,235,234,232,230,229,227,225,223,221,218,216,214,212,209,207,205,202,200,197,194,192,189,186,184,181,178,175,172,169,166,163,160,157,154,151,148,145,142,139,136,133,130,127,123,120,117,114,111,108,105,102,99,96,93,90,87,84,81,78,75,72,69,67,64,61,59,56,53,51,48,46,44,41,39,37,35,32,30,28,26,24,23,21,19,18,16,14,13,12,10,9,8,7,6,5,4,3,3,2,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,2,3,3,4,5,6,7,8,9,10,12,13,14,16,18,19,21,23,24,26,28,30,32,35,37,39,41,44,46,48,51,53,56,59,61,64,67,69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123

如果你有一个16位的流,你应该使用一个short[]来存储它,这样你就不需要担心大端/小端了。如果您选择使用byte[],它的大小将是音频样本数量的两倍,并且需要组合两个连续的字节来表示一个样本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15353450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档