장치를 열지 않고 Linux에서 프로그래밍 방식으로 ALSA 오디오 장치 기능을 찾는 방법

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

  •  18-09-2019
  •  | 
  •  

문제

장치를 먼저 열지 않고 ALSA 장치의 기능을 어떻게 알 수 있습니까? 문제는 매개 변수를 snd_pcm_open() 나에게 어리석은 테스트 기능을 사용하는 기능. 먼저 열린 기능에 대해 말해야한다면 이것이 재생 또는 레코드 장치인지 묻는 이유는 무엇입니까?

예를 들어, 나는 모든 재생 장치를 나열하고 싶지만 내가 생각할 수있는 유일한 방법은 내가 찾은 모든 장치를 여는 것입니다. snd_device_name_hint())) 그리고 재생 모드로 열려고 노력하고 내가 열리면 모든 것이 정상입니다.

문제는 모든 가능한 변형 (샘플 속도, 채널 등)을 사용하면 매개 변수를 찾기 위해 수행 해야하는 끔찍한 수의 Open ()가있을 것입니다.

도움이 되었습니까?

해결책

SND_CTL_NEXT를 사용하여 모든 장치를 반복 한 다음 SND_CTL_OPEN을 사용하여 장치에 대한 정보를 얻으십시오. 이는 SND_PCM_OPEN과 동일하지 않으며 다른 프로그램에 장치가 열려 있거나 설정이 잘못된 경우 실패 할 수 있습니다.

매우 조밀하지만 여기에 볼 수있는 모든 ALSA 장치에 반복되는 오픈 소스 코드가 있습니다. https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c - BuildDeviceList를 검색하여 시작하십시오.

다른 팁

사용 가능한 모든 오디오 장치 기능에 대해 알아야하는 Linux/Unix 프로젝트에 대한 첫 번째 요구 사항이었습니다. 그런 다음이 장치를 사용하여 오디오를 캡처하고 재생해야합니다. 내가 한 일은 매우 간단합니다. Linux의 ALSA 유틸리티를 통해 장치를 찾는 데 사용되는 Linux/UNIX 명령이 있습니다.

그것은이다:

aplay -l

이제 내가 한 일은 ALSA의 다음과 같이 외출 할 프로그램을 만드는 것입니다.

모든 사람의 도움을 위해이 라이브러리의 사용을 보여주는 (.SO) 라이브러리와 샘플 응용 프로그램을 만들었습니다.

내 라이브러리의 출력은

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

이 라이브러리는 실시간 오디오 데이터를 캡처하고 재생할 수도 있습니다.

문서화와 함께 사용할 수 있습니다 듀플렉스 ALSA 오디오가있는 ideAudio 라이브러리

쉘 명령을 수행 할 수 있습니다. 그런 다음 Aplay는 당신의 친구입니다.

http://alsa.opensrc.org/aplay

Aplay -L

모든 사운드 카드 및 디지털 오디오 장치를 나열하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top