Wie findet man heraus ALSA Audiogerätefunktionen programmatisch in Linux ohne das Gerät öffnen

StackOverflow https://stackoverflow.com/questions/1866673

  •  18-09-2019
  •  | 
  •  

Frage

Wie finde ich die Fähigkeiten von ALSA-Geräten, ohne das Gerät zuerst zu öffnen? Das Problem ist, ich brauche die Parameter an die snd_pcm_open() Funktion zuzuführen, um die Testfunktionen zu verwenden, die mir albern ist. Warum fragen, ob dies eine Wiedergabe oder Aufnahme-Gerät, wenn ich es in die offene Funktion zuerst zu sagen haben?

Als Beispiel mag ich alle Abspielgeräte zur Liste, aber der einzige Weg, die ich denken kann versucht jedes Gerät zu öffnen I (mit snd_device_name_hint()) zu finden und versuchen, sie im Wiedergabe-Modus zu öffnen, und wenn ich es schaffe zu öffnen, alles ist in Ordnung.

Das Problem ist, mit allen möglichen Variationen (Abtastrate, Kanäle, usw.) es wäre eine schreckliche große Anzahl von open () 's sein muss ich ausführen, um die Parameter zu erfahren.

War es hilfreich?

Lösung

Verwenden Sie snd_ctl_next alle Geräte durchlaufen, dann snd_ctl_open Informationen über das Gerät zu bekommen -. Das ist nicht das gleiche wie snd_pcm_open, die ausfallen können, wenn ein anderes Programm das Gerät geöffnet hat oder wenn Sie schlechte Einstellungen haben

Es ist ziemlich dicht, aber hier einige Open-Source-Code, der alle ALSA-Geräte iteriert Sie aussehen könnte: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -. Suche nach BuildDeviceList um loszulegen

Andere Tipps

Es war meine ersten Anforderungen an einen Linux / Unix-Projekte, bei denen ich über alle der verfügbaren Audiogeräte Fähigkeit zu wissen. Dann brauche ich diese Geräte zu verwenden, um die Audioaufnahme und -wiedergabe. Was ich habe, ist ziemlich einfach gemacht. Es ist ein Linux / Unix-Befehl, der verwendet wird, um die Geräte über Alsa Dienstprogramm unter Linux zu finden.

Es ist:

aplay -l

Nun, was ich tue, ist nur ein Programm, um die aus so ähnlich wie dies von ALSA zu geben.

Für die Hilfe alle Ich habe eine (.so) Bibliothek und eine Beispielanwendung, die Verwendung dieser Bibliothek in c ++ demonstrieren.

Die Ausgabe von meiner Bibliothek ist wie -

[root@~]# ./IdeaAudioEngineTest
HDA Intel plughw:0,0
HDA Intel plughw:0,2

Diese Bibliothek kann auch die Aufnahme und Wiedergabe der Echtzeit-Audiodaten.

Es ist mit Dokumentation in IdeaAudio Bibliothek mit Duplex alsa Audio

Die Bereitstellung können Sie einen Shell-Befehl ausführen. Dann aplay ist dein Freund.

http://alsa.opensrc.org/Aplay

aplay -l

  

Liste alle Soundkarten und digitales Audio   Geräte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top