我正在使用AudioRecord在android中记录16位PCM数据.记录数据并将其保存到文件后,我将其读回以将其另存为.wav文件.
问题在于WAV文件被媒体播放器识别,但只能播放纯粹的噪音.我现在最好的猜测是我的wav文件头不正确,但我一直无法确定问题到底是什么.(我想这是因为我可以播放我在Audacity录制的原始PCM数据)
这是我的代码,用于读取原始PCM文件并将其保存为.wav:
private void properWAV(File fileToConvert, float newRecordingID){
try {
long mySubChunk1Size = 16;
int myBitsPerSample= 16;
int myFormat = 1;
long myChannels = 1;
long mySampleRate = 22100;
long myByteRate = mySampleRate * myChannels * myBitsPerSample/8;
int myBlockAlign = (int) (myChannels * myBitsPerSample/8);
byte[] clipData = getBytesFromFile(fileToConvert);
long myDataSize = clipData.length;
long myChunk2Size = myDataSize * myChannels * myBitsPerSample/8;
long myChunkSize = 36 + myChunk2Size;
OutputStream os;
os = new FileOutputStream(new File("/sdcard/onefile/assessor/OneFile_Audio_"+ newRecordingID+".wav"));
BufferedOutputStream bos = new BufferedOutputStream(os); …Run Code Online (Sandbox Code Playgroud) 我想从字节数组中编写Wav文件,我还想从输入wav文件中分割通道
Java Sound API显示您可以从TargetDataLine录制音乐,并作为示例显示正在写入字节数组的数据.但是将这个字节数组写入自己的文件是相当无用的,因为它不是WAV文件格式,不能在其他应用程序中播放.
如何使用javax.sound.sampled包编写声音文件?