使用AudioStreamBasicDescription读取PCM编码的16位单声道wav文件

时间:2015-05-20 17:33:41

标签: ios objective-c c audio audiotoolbox

我想使用AudioStreamBasicDescription类读取PCM编码的16位单声道wav文件,我目前正在使用以下代码创建格式:

AudioStreamBasicDescription format;
format.mSampleRate = 44100;
format.mFormatID = kAudioFormatLinearPCM;
format.mFormatFlags = (kLinearPCMFormatFlagIsBigEndian | kAudioFormatFlagIsPacked | kLinearPCMFormatFlagIsSignedInteger);
format.mBitsPerChannel = 16;
format.mChannelsPerFrame = 1;
format.mFramesPerPacket = 1;
format.mBytesPerPacket = 2;

然后我在ExtAudioFileSetProperty对象上使用ExtAudioFileRef方法:

err = ExtAudioFileSetProperty(eaf, kExtAudioFileProperty_ClientDataFormat, sizeof(format), &format);
if(noErr != err)
{
    // handle error
    NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:err userInfo:nil];
    NSLog(@"%@", error);
}

打印错误如下:

2015-05-20 19:26:12.773 MusicSense[33442:7245119] Error Domain=NSOSStatusErrorDomain Code=-50 "The operation couldn’t be completed. (OSStatus error -50.)"

我相信我的AudioStreamBasicDescriptor有一个错误,但我不知道在哪里。我尝试了其他各种选项,但我得到了同样的错误。在定义音频格式时我是否犯了错误,或者还有别的东西?

0 个答案:

没有答案