如何修改 SpeakHere 示例应用程序以在 iPhone 上以单声道格式录制?
Posted
技术标签:
【中文标题】如何修改 SpeakHere 示例应用程序以在 iPhone 上以单声道格式录制?【英文标题】:How can I modify the SpeakHere sample app to record in mono format on iPhone? 【发布时间】:2011-03-10 05:28:24 【问题描述】:我是 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;
【问题讨论】:
有必要使用音频队列吗?你看过 AVAudioFramework for AVAudioRecorder 吗? 【参考方案1】:在 iPhone 上,您将只能以单声道录制。
您无需在 SpeakHere 示例中进行任何设置。它是自动完成的。比如AQRecorder::SetupAudioFormat
:
size = sizeof(mRecordFormat.mChannelsPerFrame);
XThrowIfError(AudiosessionGetProperty( kAudioSessionProperty_CurrentHardwareInputNumberChannels,
&size,
&mRecordFormat.mChannelsPerFrame), "couldn't get input channel count");
获取支持的硬件输入通道并将其设置为 ivar。在其他地方,缓冲区大小的计算会考虑到这一点。
【讨论】:
以上是关于如何修改 SpeakHere 示例应用程序以在 iPhone 上以单声道格式录制?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Speakhere 示例中的 AQRecorder
iPhone dev - AudioQueue 服务在后台录制
如何使用 Spring Boot 修改 HttpServletResponse 以在 json 中包含一些标准属性? [复制]