1

iPhone初心者です。Apple の SpeakHere アプリを変更して、モノラル フォーマットで録音する方法を教えてください。何を設定する必要がmChannelsPerFrameあり、他に何を設定する必要がありますか?

linearPCM WAVE フォーマットで録音するために、すでにいくつかの部分を変更しています。

speakHere へのリンクはこちらです。

これが私が変更できると思うものですが、音についてはよくわかりません:

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;
        }
    }
4

1 に答える 1

0

iPhone ではモノラルでしか録音できません。

SpeakHere の例では、これを設定するために何もする必要はありません。それは自動的に行われます。たとえば、AQRecorder::SetupAudioFormat次のようになります。

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

これにより、サポートされているハードウェア入力チャネルが取得され、ivar として設定されます。他の場所では、バッファ サイズの計算でそれが考慮されます。

于 2012-01-19T17:51:29.947 に答える