【问题标题】:Getting power of a music played in iPhone获取在 iPhone 中播放的音乐的力量
【发布时间】:2012-10-26 12:05:39
【问题描述】:

我正在拼命寻找如何在我的应用程序中获得通过 iPod/Music 应用程序播放的声音的强大功能。

我所能找到的一切都是关于通过麦克风获取声音的力量,或者通过 AVAudioPlayer 在我自己的应用程序中播放声音,然后使用 averagePowerForChannel: 方法。 我还搜索了 MPMusicPlayerController 是否可以帮助我,但我从我想要的最接近的是“nowPlayingItem”的 MPMediaItem,似乎我可以从当前播放的歌曲中访问很多信息,但没有像当前的力量。

有什么方法可以简单地从我的应用中的音乐应用中获取当前播放的歌曲的力量?

【问题讨论】:

    标签: iphone objective-c ios audio


    【解决方案1】:

    Larme 的答案在 iOS 7 中被弃用(MPMusicPlayervolume 属性和 iPodMusicPlayer 方法)。试试这个来获取当前歌曲的 AVAudioPlayer 实例(但是,当我这样做时,出于某种奇怪的原因,它总是返回 -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);
    

    【讨论】:

    • 我已经多年不再从事这个项目了,所以我不确定你的答案是否有效(Larme 的答案得到了音量,而不是 AlexChaffee 评论的力量),但这似乎是我当时正在寻找的那种东西,所以无论如何我都会接受它。希望你能帮助别人回答这个问题:)
    【解决方案2】:

    试试这个:myPlayer = [MPMusicPlayerController iPodMusicPlayer];

    您可以通过myPlayer.volume 获取音量。 这是一个浮子。一步是 1/16。

    【讨论】:

    • 那是音量,不是功率。功率是每时每刻的水平,你会在分贝计上看到的东西。 (如果 power 为 0,则无论音量如何,都不会发出声音。)
    • 卷现已弃用
    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2023-03-13
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多