6

Macで現在のオーディオ出力を利用して、現在のサウンドレベルを表す値を返す方法を探しています。

サウンドレベルとは、出力によって生成されるノイズの量を意味します。出力デバイスの現在の音量レベルを取得する方法を尋ねていません。

4

1 に答える 1

17

次のコードはAppleのサンプルAVRecorderから抜粋したものです…この特定のコードは、このクラスのmovieFileOutputの接続メソッドから一連の接続を取得し、接続ごとにAVCaptureAudioChannelを取得し、それに基づいてデシベルパワーを計算します。出力「ノイズレベル」を探しているなら、同様の情報を取得できると思います。これよりも低いレベルのものを探している場合は、HAL(Hardware Abstraction Layer)フレームワークを試してください。

- (void)updateAudioLevels:(NSTimer *)timer
{
    NSInteger channelCount = 0;
    float decibels = 0.f;

    // Sum all of the average power levels and divide by the number of channels
    for (AVCaptureConnection *connection in [[self movieFileOutput] connections]) {
        for (AVCaptureAudioChannel *audioChannel in [connection audioChannels]) {
            decibels += [audioChannel averagePowerLevel];
            channelCount += 1;
        }
    }

    decibels /= channelCount;

    [[self audioLevelMeter] setFloatValue:(pow(10.f, 0.05f * decibels) * 20.0f)];
}
于 2012-08-13T05:37:10.940 に答える