AVAudioRecorder averagePowerForChannel gibt immer -120.0 zurück

8

Ich versuche AVAudioRecorders Methode mediaPowerForChannel zu verwenden, um die Eingangspegel am Mikrofon für eine iPad / iPhone-App zu überwachen. Ich habe einen Callback, der das durchschnittliche Level in einer Schleife abfragt - auf dem iPhone funktioniert es gut und gibt vernünftige Level zurück, aber aus irgendeinem Grund gibt es auf dem iPad immer -120.0.

Hier ist ein Teil meines Setup-Codes:

%Vor%

Sowie meine Aufnahmemethode:

%Vor%

und ein bisschen der LevelTimer Callback:

%Vor%

Wo auf dem iPhone die NSLog-Anweisung sinnvolle Werte zurückgibt und das iPad immer -120.0 zurückgibt.

Hinweis: Ich benutze dies innerhalb einer cocos2d-Anwendung. Aus irgendeinem Grund, wenn ich die aktuelle Szene auf dem iPad neu starte, geben die Mikrofonpegel korrekte Werte zurück.

Hat jemand irgendwelche Vorschläge? Ich bin hier ernsthaft ratlos. Danke!

    
chmod 16.02.2011, 21:45
quelle

5 Antworten

17

Ich hatte das gleiche Problem. Ich fand die Einstellung der Kategorie auf AVAudioSessionCategoryPlayAndRecord behebt es:

%Vor%     
Richard Caetano 04.04.2011, 11:54
quelle
1

Ja, ich auch. Es gibt nur eine gemeinsame AVAudioSession. Die Einstellung der Kategorie wirkt sich auf alle Recorder und Player aus. Wenn Sie die Kategorie auf AVAudioSessionCategoryPlay in einem Bereich der App einstellen, werden beispielsweise Recorder in anderen Bereichen deaktiviert.

    
Steve Rogers 11.02.2012 14:23
quelle
0

Eine andere mögliche Ursache dafür ist wirklich einfach, stellen Sie sicher, dass Sie [record record] aufrufen;

Diese Zeile wurde versehentlich gelöscht und es dauerte eine Weile, bis wir die Ursache für die -120-Werte auf dem Messgerät erkannt haben.

HTH

    
Jimmy_m 07.07.2012 07:05
quelle
0

1) Stellen Sie sicher, dass Sie die Berechtigung haben:

%Vor%

2) Stellen Sie sicher, dass Ihr Pfad legitim ist (/ dev / null ok ??):

%Vor%

3) aktivieren Sie audioSession

%Vor%

4) Überprüfen Sie alle Fehler und geben Sie Werte zurück, einschließlich

%Vor%     
Anona112 10.12.2015 20:51
quelle
0

Sie müssen die AVAudioSession starten (dies sollte von der didMoveToview-Methode aus geschehen, dies könnte ein Grund für das Problem sein)

%Vor%

und starten Sie den Recorder

%Vor%

Und holen Sie sich die Dezibel, indem Sie

anrufen %Vor%

von -120 (minimaler Wert) bis zu 0. Das Noise Level eines Cafés ist beispielsweise -20

Hier ist das detailliertere Beispiel Ссылка Hinweis: Verwenden Sie auch die Aktualisierungsmethode.

    
Mikita Manko 15.04.2017 17:37
quelle