1

所以一个 .wav 文件有几个标准块。在我使用的大多数文件中,首先是“RIFF”块,然后是“fmt”块,然后是“DATA”块。使用 AVAudioRecorder 录制时,会创建这些块(尽管在“DATA”块之前会创建一个额外的“FLLR”。)

使用 AudioQueue 创建文件时,不会创建那些标准块。相反,AudioQueue 按顺序创建“caff”、“desc”、“lpcm”、“free”和“data”块。

这是怎么回事?不是需要“RIFF”和“fmt”块吗?如何强制包含这些块?

我正在通过以下方式创建文件:

AudioFileCreateWithURL(URL, kAudioFileCAFType, &inputDataFormat, kAudioFileFlags_EraseFile, &AudioFile);

inputDataFormat 是具有完整属性的 AudioStreamBasicDescription。

那么,至少,如何使用 AudioQueue 编写“RIFF”和“fmt”块?

谢谢。

4

1 回答 1

1

所以一个 .wav 文件有几个标准块。…</p>

使用 AudioQueue 创建文件时,不会创建那些标准块。…</p>

⋮</p>

我正在通过以下方式创建文件:

AudioFileCreateWithURL(URL, kAudioFileCAFType, &inputDataFormat, kAudioFileFlags_EraseFile, &AudioFile);

让这成为在一个人的问题中显示一个人的代码的价值的一个例子。:-)

kAudioFileCAFType是核心音频文件,而不是 WAV 文件。试试kAudioFileWAVEType吧。

于 2009-08-06T06:06:29.313 回答