In meiner App muss ich zwischen diesen zwei verschiedenen AudioUnits wechseln. Immer wenn ich von VPIO auf RemoteIO umschalte, sinkt mein Aufnahmevolumen. Ziemlich großer Rückgang. Keine Änderung der Wiedergabelautstärke. Jeder hat das erlebt?
Hier ist der Code, wo ich den Switch mache, der durch eine Routing-Änderung ausgelöst wird. (Ich bin mir nicht sicher, ob ich die Änderung richtig gemacht habe, also frage ich auch hier.)
Wie löse ich das Problem mit dem Abfall des Aufnahmevolumens?
Danke, schätze jede Hilfe, die ich bekommen kann.
Pier.
%Vor%Ich habe dafür meinen Apple Developer Support benutzt. Hier ist, was die Unterstützung sagte:
Das Vorhandensein der Voice I / O führt dazu, dass der Eingang / Ausgang sehr unterschiedlich verarbeitet wird. Wir erwarten nicht, dass diese Einheiten die gleichen Verstärkungspegel haben, aber die Pegel sollten nicht drastisch abfallen, wie es scheint, dass Sie darauf hinweisen.
Das Core-Audio-Engineering hat jedoch angegeben, dass Ihre Ergebnisse möglicherweise mit der Erstellung des Sprachblocks zusammenhängen. Dies wirkt sich auch auf die RIO-Instanz aus. Bei weiteren Diskussionen, Core Audio Engineering, wurde der Eindruck erweckt, dass der Pegelunterschied sehr drastisch ist. Daher wäre es gut, wenn Sie bei einigen Aufnahmen einen Fehler machen könnten, um den Pegelunterschied zwischen Voice I / O und Remote I / O zusammen mit Ihrem Testcode, so dass wir versuchen können, im Haus zu reproduzieren und zu sehen, ob das tatsächlich ein Fehler ist. Es wäre eine gute Idee, die Ergebnisse der oben skizzierten Einzel-IO-Unit-Tests sowie weitere Vergleichsergebnisse einzubeziehen.
Es gibt keine API, die diese Verstärkungsebene steuert, alles wird intern vom Betriebssystem abhängig von der Audio-Session-Kategorie eingerichtet (z. B. wird VPIO immer mit PlayAndRecord verwendet) und welche IO-Einheit wurde eingerichtet. Im Allgemeinen wird nicht erwartet, dass beide gleichzeitig instanziiert werden.
Fazit? Ich denke, es ist ein Fehler. : /
Es wird über Probleme mit geringer Lautstärke gesprochen, wenn Sie Ihre Audioeinheit nicht ordnungsgemäß entsorgen. Grundsätzlich bleibt die erste Audiokomponente im Speicher und jede nachfolgende Wiedergabe wird unter Ihre oder andere Apps verschoben, wodurch der Datenträger abfällt.
Lösung: Audioeinheiten sind AudioComponentInstances und müssen mit AudioComponentInstanceDispose () freigegeben werden.
Ich hatte Erfolg, als ich die Audio-Session-Kategorie änderte, als ich von der Sprachverarbeitung io (PlayAndRecord) zu Remote IO (SoloAmbient) wechselte. Stellen Sie sicher, dass Sie die Audio-Session pausieren, bevor Sie dies ändern. Sie müssen auch Ihre Audiografik nicht initialisieren.
Tags und Links ios core-audio remoteio