iOS kAudioFileUnsupportedDataFormatError 在创建音频文件进行录制时

Posted

技术标签:

【中文标题】iOS kAudioFileUnsupportedDataFormatError 在创建音频文件进行录制时【英文标题】:iOS kAudioFileUnsupportedDataFormatError while creating Audio File for recording 【发布时间】:2016-09-29 17:35:16 【问题描述】:

我正在使用 ExtAudioFileCreateWithURL 并在创建 Stereo LPCM Float32 Wave 文件时始终遇到运行时 kAudioFileUnsupportedDataFormatError 错误。我坚持认为同样的程序适用于 Mono(单通道)文件。有什么提示吗?

这里是sn-p的代码:

let audioType: AudioFileTypeID = kAudioFileWAVEType 
var recordingFormatStream = CAStreamBasicDescription(sampleRate: sampleRate, numChannels: 2, pcmf: .Float32, isInterleaved: false)!

err = ExtAudioFileCreateWithURL(audioFileRecordingURL,
                                    audioType,
                                    &recordingFormatStream,
                                    nil,
                                    AudioFileFlags.EraseFile.rawValue,
                                    &audioRecordingAudioFile)

注意audioFileRecordingURLaudioRecordingAudioFile 的输入和设置正确。

对于记录,recordingFormatStream 包含:

mFormatFlags = kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsFloat | kAudioFormatFlagIsNonInterleaved
mFormatID = kAudioFormatLinearPCM
mSampleRate: 44100.0
mBytesPerPacket: 4, mFramesPerPacket: 1, mBytesPerFrame: 4, mChannelsPerFrame: 2, mBitsPerChannel: 32, mReserved: 0

我坚持如果我将numChannels 更改为1,一切都很好!使用 ios 9.3 SDK。

【问题讨论】:

【参考方案1】:

经过一番努力:SDK 中的ExtAudioFile 方法不接受非交错音频。我相信这在某种程度上是新的!

感谢这个帖子:Using ExtAudioFileWriteAsync() in callback function. Can't get to run

【讨论】:

以上是关于iOS kAudioFileUnsupportedDataFormatError 在创建音频文件进行录制时的主要内容,如果未能解决你的问题,请参考以下文章

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别