【问题标题】:How to display audio meter on an iPhone [duplicate]如何在 iPhone 上显示音频表 [重复]
【发布时间】:2011-04-16 13:54:58
【问题描述】:

我有一个录音机,我想知道是否有人有显示音频表的代码(大多数录音机都有显示输入音频电平的栏)。

【问题讨论】:

    标签: iphone objective-c avaudiorecorder


    【解决方案1】:

    Apple 的 SpeakHere 示例代码包含一个 LevelView 类,这似乎正是您正在寻找的。​​p>

    【讨论】:

    • 这个苹果示例代码在您自己的项目中实现起来绝非易事。极度混乱和不必要的复杂
    • 是的。这一点都不简单。它的作用非常简单,但代码非常混乱......
    • @SamB 我可以在我的项目中使用苹果的 SpeakHear 示例吗?
    • 链接失效了。。谁能分享关卡视图类?
    • 看起来在github.com/robovm/apple-ios-samples/tree/master/SpeakHere有一个 SpeakHere 示例的副本
    【解决方案2】:

    这是一个计算输出并打印出来的例子:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSURL *url = [NSURL fileURLWithPath:@"/dev/null"]; // Your audio save path
    
        NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
                              [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                              [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                              [NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
                              nil];
    
        NSError *error;
    
        recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
    
        if (recorder) {
            [recorder prepareToRecord];
            recorder.meteringEnabled = YES;
            [recorder record];
            levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
        } 
    }
    
    
     - (void)levelTimerCallback:(NSTimer *)timer {
        [recorder updateMeters];
    
        const double ALPHA = 0.05;
        double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
        lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
        NSLog(@"%f",(lowPassResults*100.0f));
    }
    

    根据 lowPassResults,您可以相应地为视图设置动画。

    【讨论】:

    • 'lowPassResults' 未初始化使用,是 iVar 吗?它的初始值是多少?
    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多