2016-03-19 6 views
0

und Dank in advamce für Ihre HilfeQt iOS Ausgabe - QAudioRecorder mit Änderungen Audioausgabegerät

Ich bin eine mobile Anwendung auf zwei Plattformen gezielt zu entwickeln - iOS und Android - Qt-Technologie.

App zeichnet Sounds auf und spielt sie nach ein wenig Verarbeitung wieder ab. Dafür verwende ich zwei Klassen aus dem QtMultimedia-Modul: QAudioRecorder, um Audio aufzunehmen und in QBuffer zu speichern, und QMediaPlayer, um Daten aus dem verarbeiteten Puffer wiederzugeben.

Code funktioniert einwandfrei auf Android, aber aus irgendeinem Grund, auf iOS Musik sehr quietly gespielt, auch wenn ich die Telefonlautstärke auf max einrichten und mediaPlayer-> setVolume (100) aufrufen.

Bei einem kompletten Unfall habe ich herausgefunden, dass der Sound nicht vom Hauptlautsprecher, sondern von dem kleinen, der für Telefongespräche verwendet wird. Das gab mir einen notwendigen Hinweis und half, eine Quelle des Problems zu finden:

audioRecorder = new QAudioRecorder();

Nach der Initialisierung der Audiorekorder-Instanz und allen darauf bezogenen Referenzen wurde die Audioausgabe wieder normalisiert. Aber wenn ich versuche, es irgendwo in meinen Code einzufügen, schaltet es die Ausgabe sofort wieder um und es gibt keine Möglichkeit, dass ich es zurück ändern kann.

Was habe ich versucht:

  • Löschen Objekt von QAudioRecorder nach der Aufnahme

  • Mit QAudioOutput statt QMediaPlayer und Einstellung Ausgabegerät ein auf Standard beendet: Audiooutput = new QAudioOutput (QAudioDeviceInfo: : defaultOutputDevice(), audioFormat, this); Hier liegt ein weiteres Problem, weil QAudioDeviceInfo :: availableDevices (QAudio :: Audiooutput) nur "default" gibt - und QAudioDeviceInfo :: availableDevices (QAudio :: Audioeingang) gibt nur die gleiche

  • die gleiche Geschichte mit QAudioInput statt QAudioRecorder

  • QMediaService von QMediaPlayer erhalten und QAudioOutputSelectorControl davon abrufen QMediaService * service = mediaPlayer-> service(); QAudioOutputSelectorControl * outputSelector = qobject_cast (service-> requestControl (QAudioOutputSelectorControl_iid)); Aber diese Operation null zurück

Wenn Sie das gleiche Problem konfrontiert haben oder eine Idee haben, es zu lösen, ich kann es hören möchte. Was ich brauche, ist die Fähigkeit, Audio aufzunehmen, ohne das Ausgabegerät zu wechseln.

Antwort

0

Das Problem mit geringem Volumen ist ein Qt-Fehler, der anscheinend nicht behoben wurde: https://bugreports.qt.io/browse/QTBUG-37379.

Ich hatte das gleiche Problem und reparierte es, indem ich manuell den Qt-Quellcode für meinen speziellen Anwendungsfall hackte.