2011-11-14 7 views
3

私のLinuxシステムで利用可能なすべてのオーディオデバイスのリストを取得します。次に、このリストをコンボボックスに表示して、そこからユーザーが録音/再生に使用するデバイスを選択します。ユーザーの選択に基づいて、録音/再生用にQAudioInputQAudioOutputを作成します。Qt:Linuxで使用可能なオーディオデバイスのリストを取得します

Qtのドキュメントによると、これはQAudioDeviceInfo::availableDevices静的メソッドを使用して行うことができます。このメソッドは、システム内で使用可能なすべてのオーディオデバイスのリストを返します。

この方法を使用して、オーディオデバイスの数を一覧表示しました。私のシステムには2つのサウンドカードがインストールされているので(マザーボードに1つ、USBデバイスに1つ)、このメソッドは2つの要素だけを含むリストを返すはずです。しかし、それは23の項目を含むリストを返しました。この背後にある理由は、おそらくバックエンドで使用されているALSA APIある

default 
pulse 
front:CARD=Intel,DEV=0 
surround40:CARD=Intel,DEV=0 
surround41:CARD=Intel,DEV=0 
surround50:CARD=Intel,DEV=0 
surround51:CARD=Intel,DEV=0 
surround71:CARD=Intel,DEV=0 
dmix:CARD=Intel,DEV=0 
dsnoop:CARD=Intel,DEV=0 
hw:CARD=Intel,DEV=0 
plughw:CARD=Intel,DEV=0 
front:CARD=default,DEV=0 
surround40:CARD=default,DEV=0 
surround41:CARD=default,DEV=0 
surround50:CARD=default,DEV=0 
surround51:CARD=default,DEV=0 
surround71:CARD=default,DEV=0 
iec958:CARD=default,DEV=0 
dmix:CARD=default,DEV=0 
dsnoop:CARD=default,DEV=0 
hw:CARD=default,DEV=0 
plughw:CARD=default,DEV=0 

- 私は自分の名前をアクセスしたとき、私は以下のようなものを得ました。 this article ALSAは、サウンドカードを複数の論理オーディオデバイスに論理的に分割します。複数の論理オーディオデバイスは、Qt APIがドライバを照会するときにフェッチされます。

ユーザーが選択できるように、これらの名前をすべてリストしたくありません。その後、

が、これはQtのを使用して行うことができますどのような方法があります。..彼らの希望のサウンドカードを選択しますどのユーザから

HDA-Intel 
USB-Audio 

- 私のようなものをリストアップしたいですか?もしそうでなければ、私は本当にここで何が他の選択肢が使用できるのか知りたいです。

答えて

0

これを実行する唯一の方法は、Qtからaplay/arecordプロセスを起動し、結果出力をプロセスから取得し、出力文字列を解析してカード名と対応するIDを見つけることです。このアプローチはあまりにもプロセスの出力文字列形式に依存しているので、私はそれを使用しませんでした。

代わりに、PulseAudioサーバーを選択して、システム上で使用可能なデバイスを取得しました。 QtのマルチメディアAPIよりもはるかに優れたコントロールを提供するため、オーディオI/Oにも使用しました。

0

私は回避策と呼ばれていることは知っていますが、あなたのリストにCARD =の異なる値をリストすることで、この情報が得られたようです。

アプリケーションがクロスプラットフォームであると想定されている場合、このコマンドは他のオペレーティングシステムでは何を返しますか?

+0

このコマンドは、使用可能なオーディオデバイスを適切に返します(Windows 7でテスト済み)。 Qtのマルチメディアは、ALSA for Linuxの下にあるオーディオドライバに依存しています。 ALSAは、これらの複数のデバイスすべてでサウンドカードを分割するので、Qtはそれらを取り出して表示しています。とにかく、ここでの回避策は、ALSAを直接使用するか、PulseAudioやJackなどのサウンドサーバーを使用することです(私はPulseAudioを選択しました)。 –

関連する問題