5

アプリケーションで iPod/Music アプリを介して再生されるサウンドのパワーを得る方法を必死に探しています。

私が見つけることができたのは、マイクを介してサウンドのパワーを取得するか、AVAudioPlayer を介して自分のアプリでサウンドを再生してから averagePowerForChannel: メソッドを使用することだけでした。MPMusicPlayerController が私を助けることができるかどうかも検索しましたが、私が望むものから最も近いのは「nowPlayingItem」の MPMediaItem であり、現在再生されている曲から多くの情報にアクセスできるようですが、現在のパワーのようなものはありません。

私のアプリで音楽アプリから再生された曲の現在のパワーを簡単に取得する方法はありますか?

4

2 に答える 2

0

Larme の回答は、iOS 7 で廃止されました (およびメソッドのvolume属性)。代わりにこれを試して、現在の曲のインスタンスを取得してください (ただし、私の場合、何らかの奇妙な理由で、常に が返されます)。MPMusicPlayeriPodMusicPlayerAVAudioPlayer-120 dB

AVAudioPlayer *somePlayer = [AVAudioPlayer new];
__autoreleasing NSError* error;
somePlayer = [somePlayer initWithContentsOfURL:[[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyAssetURL] error:&error];
somePlayer.currentTime = [[MPMusicPlayerController systemMusicPlayer] currentPlaybackTime];
somePlayer.volume = 0;
[somePlayer play];
[somePlayer setMeteringEnabled:YES];
[somePlayer updateMeters];
NSMutableArray* amps = [NSMutableArray array];
if (error != nil) {
    NSLog(@"error: %@", error.debugDescription);
}
for (int i = 0; i < somePlayer.numberOfChannels; i++) {
    [amps addObject:@(([somePlayer peakPowerForChannel:i] + 160.0) / 160.0)];
    NSLog(@"Amplitude: %f db for channel %i", [somePlayer averagePowerForChannel:i], i);
}
float amp = 0;
for (NSNumber *x in amps) {
    amp += [x floatValue];
}
amp /= amps.count;
NSLog(@"amp: %f", amp);
于 2015-06-16T04:14:22.317 に答える
0

これを試して :myPlayer = [MPMusicPlayerController iPodMusicPlayer];

で音量を出すことができますmyPlayer.volume。フロートです。ステップは 1/16 です。

于 2012-11-07T18:02:18.230 に答える