2011-03-10 46 views
1

我是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; 
     } 
    } 
+0

是否有必要使用音频队列?你有没有看AVAudioRecorder的AVAudioFramework? – Viraj 2011-03-10 06:22:50

回答

0

在iPhone上你只能以单声道录制。

您不需要在SpeakHere示例中进行任何设置。它是自动完成的。例如,在AQRecorder::SetupAudioFormat

size = sizeof(mRecordFormat.mChannelsPerFrame); 
XThrowIfError(AudioSessionGetProperty( kAudioSessionProperty_CurrentHardwareInputNumberChannels, 
       &size, 
       &mRecordFormat.mChannelsPerFrame), "couldn't get input channel count"); 

即得到支持的硬件输入通道,并将其设置伊娃。在其他地方,缓冲区大小的计算将影响因素。

相关问题