我是iPhone新手。你可以帮我修改Apple的SpeakHere应用程序,以单声道格式录制。我应该为mChannelsPerFrame
设置什么以及我应该设置什么?
我已经在linearPCM WAVE格式上更改了部分记录。
以下是link发言。
以下是我认为他们允许我改变但我对声音不太了解:
void ChangeNumberChannels(UInt32 nChannels, bool interleaved)
// alter an existing format
{
Assert(IsPCM(), "ChangeNumberChannels only works for PCM formats");
UInt32 wordSize = SampleWordSize(); // get this before changing ANYTHING
if (wordSize == 0)
wordSize = (mBitsPerChannel + 7) / 8;
mChannelsPerFrame = nChannels;
mFramesPerPacket = 1;
if (interleaved) {
mBytesPerPacket = mBytesPerFrame = nChannels * wordSize;
mFormatFlags &= ~kAudioFormatFlagIsNonInterleaved;
} else {
mBytesPerPacket = mBytesPerFrame = wordSize;
mFormatFlags |= kAudioFormatFlagIsNonInterleaved;
}
}
答案 0 :(得分:0)
在iPhone上,您只能以单声道录制。
在SpeakHere示例中,您不需要做任何事情来设置它。它是自动完成的。例如,在AQRecorder::SetupAudioFormat
:
size = sizeof(mRecordFormat.mChannelsPerFrame);
XThrowIfError(AudioSessionGetProperty( kAudioSessionProperty_CurrentHardwareInputNumberChannels,
&size,
&mRecordFormat.mChannelsPerFrame), "couldn't get input channel count");
获得支持的硬件输入通道并将其设置为ivar。在其他地方,缓冲区大小计算会将其计入。