如何修改SpeakHere示例应用程序以在iPhone上以单声道格式进行录制?
问题描述:
我是iPhone新手。您能否帮我修改Apple的SpeakHere应用程序以单声道格式录制。我需要为mChannelsPerFrame
设置什么以及我应该设置什么?如何修改SpeakHere示例应用程序以在iPhone上以单声道格式进行录制?
我已经在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;
}
}
答
在iPhone上你只能以单声道录制。
您不需要在SpeakHere示例中进行任何设置。它是自动完成的。例如,在AQRecorder::SetupAudioFormat
:
size = sizeof(mRecordFormat.mChannelsPerFrame);
XThrowIfError(AudioSessionGetProperty( kAudioSessionProperty_CurrentHardwareInputNumberChannels,
&size,
&mRecordFormat.mChannelsPerFrame), "couldn't get input channel count");
即得到支持的硬件输入通道,并将其设置伊娃。在其他地方,缓冲区大小的计算将影响因素。
是否有必要使用音频队列?你有没有看AVAudioRecorder的AVAudioFramework? – Viraj 2011-03-10 06:22:50