关于android录音实时传输出现噪音的问题

ShawnRS6 ShawnRS6 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
目前在做的一个项目需要将从audiorecorder录音后得到的byte数据直接传输到后台,同时要在本地做存储。
1,本地存储:我是用RandomAccessFile的方式写入到本地文件的;
/* RIFF header */
file.writeBytes("RIFF"); // riff id
file.writeInt(0); // riff chunk size *PLACEHOLDER*
file.writeBytes("WAVE"); // wave type

/* fmt chunk */
file.writeBytes("fmt "); // fmt id
file.writeInt(Integer.reverseBytes(16)); // fmt chunk size
file.writeShort(Short.reverseBytes((short) 1)); // format: 1(PCM)
file.writeShort(Short.reverseBytes((short) CHANNELS)); // channels: 1
file.writeInt(Integer.reverseBytes(FREQUENCY)); // samples per second
file.writeInt(Integer.reverseBytes((int) (CHANNELS * FREQUENCY * BITS / 8))); // BPSecond
file.writeShort(Short.reverseBytes((short) (CHANNELS * BITS / 8))); // BPSample
file.writeShort(Short.reverseBytes((short) (CHANNELS * BITS))); // bPSample

2,传输到后台:
我也把相同的文件头写入到了数据流中,然后audiorecorder产生的byte不做处理,直接用socket流传输到后台:
/* RIFF header */
dataOutputStream.writeBytes("RIFF"); // riff id
dataOutputStream.writeInt(0); // riff chunk size *PLACEHOLDER*
dataOutputStream.writeBytes("WAVE"); // wave type

/* fmt chunk */
dataOutputStream.writeBytes("fmt "); // fmt id
dataOutputStream.writeInt(Integer.reverseBytes(16)); // fmt chunk size
dataOutputStream.writeShort(Short.reverseBytes((short) 1)); // format: 1(PCM)
dataOutputStream.writeShort(Short.reverseBytes((short) CHANNELS)); // channels: 1
dataOutputStream.writeInt(Integer.reverseBytes(FREQUENCY)); // samples per second
dataOutputStream.writeInt(Integer.reverseBytes((int) (CHANNELS * FREQUENCY * BITS / 8))); // BPSecond
dataOutputStream.writeShort(Short.reverseBytes((short) (CHANNELS * BITS / 8))); // BPSample
dataOutputStream.writeShort(Short.reverseBytes((short) (CHANNELS * BITS))); // bPSample

3,问题:
目前的情况是,本地存储的文件在播放时没有问题,声音很正常;但是传输到后台产生的文件,在播放时会出现周期性的dadada的声音。
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
ShawnRS6
Android 80,489 成员 91,375 内容