2016-03-19 4 views
0

を変更し、あなたの助けのQtのiOS問題 - Qtの技術を使用して - iOSとAndroidの - QAudioRecorderを使用して、私は2つのプラットフォームを対象モバイルアプリケーションを開発していたオーディオ出力デバイス

ためadvamceで感謝。

アプリが少しの処理の後にサウンドを録音して再生しています。そのためには、QtMultimediaモジュールの2つのクラス、QAudioRecorder、オーディオを録音してQBufferに格納する、QMediaPlayerを使用して処理済みバッファからデータを再生します。

Androidでコードが正常に動作しますが、何らかの理由でiOSの音楽が非常にうまく演奏されました。電話の音量を最大に設定しても、 mediaPlayer-> setVolume(100)が呼び出されます。

私は、音がメインスピーカーからではなく、電話の会話に使用されている小さなものから演奏しているという事実を思い出しました。それは私に必要なヒントを与え、問題の原因を突き止めるのを助けました:

audioRecorder = new QAudioRecorder();

オーディオレコーダインスタンスの初期化とそのすべての参照をコメントした後、オーディオ出力が正常に戻ってきました。しかし、私がコード内のどこにでも挿入しようとすると、すぐに出力が再び切り替わります。それを元に戻す方法はありません。

私が試してみました何:録画がデフォルトに出力デバイスをQAudioOutput代わりにQMediaPlayerを使用して設定

  • を終えた後QAudioRecorderのオブジェクトを削除

    • 1: audioOutput =新しいQAudioOutput(QAudioDeviceInfo: :defaultOutputDevice()、audioFormat、this); QAudioDeviceInfo :: availableDevices(QAudio :: AudioOutput)は唯一の "default" を返すので、ここで は、別の問題がある - とQAudioDeviceInfo :: availableDevices(QAudio :: AudioInput)ちょうど同じ

    • QAudioInputと同じ話の代わりを返しますQAudioRecorder

    • QMediaPlayerのQMediaServiceを取得し、そこからQAudioOutputSelectorControlを取得します。 QMediaService * service = mediaPlayer-> service(); QAudioOutputSelectorControl * outputSelector = qobject_cast(サービス - > requestControl(QAudioOutputSelectorControl_iid)); しかし、この操作は、あなたが同じ問題に直面したり、それを解決するの任意のアイデアを持っている場合は、私はそれを聞きたい

      ヌル

    を返します。必要なのは、出力デバイスを切り替えることなくオーディオを録音する機能です。

  • 答えて

    0

    低音量の問題は、明らかに修正されていないQtバグです。https://bugreports.qt.io/browse/QTBUG-37379です。

    私も同様の問題に直面し、特定のユースケースのQtソースコードを手動でハッキングして修正しました。

    関連する問題