相关疑难解决方法(0)

将PCM记录的数据写入.wav文件(java android)

我正在使用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)

java android wav pcm audiorecord

35
推荐指数
2
解决办法
3万
查看次数

如何在Java中将Wav文件拆分为通道?

我想编写一个Java程序将wav文件拆分为多个通道。输入将是一个wav文件,而输出将是与通道数量一样多的wav文件。我可以用Java读取wav文件,但是如何将其拆分为通道?

java audio wav

1
推荐指数
1
解决办法
6195
查看次数

有人可以解释.wav(WAVE)文件头吗?

好的,因此我正在尝试制作一个可处理.wav文件的程序,并且已经看到了此问题/答案,但是我不确定是标题中的每个数据指的是什么。例如,“块”指的是什么?那是特定数量的位/字节吗?

如果有人能至少以本问题中使用的格式告诉我,除了常量String Literals和“数据”数组之外,每个引用到.wav的数据是什么?特别是,我特别想知道什么是“块”,以及所有通道的采样率,字节率,每个采样的字节和每个采样的字节有何关系?(我怀疑字节速率是采样率*每个采样的字节,但是“针对所有渠道”呢?)

任何帮助表示赞赏。

java audio byte header wav

0
推荐指数
2
解决办法
3283
查看次数

标签 统计

java ×3

wav ×3

audio ×2

android ×1

audiorecord ×1

byte ×1

header ×1

pcm ×1