从PCM转换为WAV。可能吗?

时间:2014-01-15 07:38:34

标签: audio ios7 xcode5

我有一个iPAD申请。 此应用程序记录麦克风的声音。 该项目的音频格式必须是PCM,MP3和WAV文件。 MP3文件我从原始原始文件开始,然后使用LAME转换。 不幸的是,我没有找到任何允许我将PCM文件转换为WAV文件的示例。 我只是注意到,如果我把文件扩展名放到WAV格式,从原始应用程序开始保存没有问题,所以我认为没有PCM WAV文件的类型转换。 正确的吗?

PS:对不起我的英文...我使用谷歌翻译

3 个答案:

答案 0 :(得分:13)

WAV是某种盒子。 PCM在盒子里。有许多容器格式,如MP4。 MP4可以包含音频,视频或两者。它还可以包含多个视频或音频流。或者zip文件。 Zip文件可以包含文本文件。但是zip文件也可以包含图像,pdf,...但是你不能说"如何将zip文件转换为zip"中的文本文件。

如果你想将PCM数据转换为WAVE文件,你应该没有太多问题,因为WAV文件是非常简单的文件。看看这个: enter image description here

(另见here) 您首先需要该标题,然后只需附加所有pcm数据(参见数据字段)。

答案 1 :(得分:3)

将PCM转换为WAV并不太难。 PCM和WAV两种格式都包含原始PCM数据,唯一的区别是它们的标题(wav包含一个pcm没有的标题)。所以,如果你只是添加wav标题,那么它会做一些技巧。只需获取PCM数据并在PCM数据之上添加wav标头。要使用PCM数据添加wav标头,请选中此link

答案 2 :(得分:1)

我正在一个只接受wav文件的系统上工作,但是我从亚马逊Polly那里收到的是pcm,所以最终做到了这一点,并解决了我的问题。希望它能帮助某人。这是一个nodejs的示例。


    // https://github.com/TooTallNate/node-wav
    const FileWriter = require('wav').FileWriter
    
    let audioStream = bufferToStream(res.AudioStream);
    var outputFileStream = new FileWriter(`${outputFileFolder}/wav/${outputFileName}.wav`, {
                                sampleRate: 8000,
                                channels: 1
                            });
    audioStream.pipe(outputFileStream);
    
    function bufferToStream(binary) {
        const readableInstanceStream = new Stream.Readable({
            read() {
                this.push(binary);
                this.push(null);
            }
        });
        return readableInstanceStream;
    }