2010-02-28 4 views
2

나는 PortAudio를 사용하여 오디오 응용 프로그램을 작성하려고하지만하고, 나는 다음과 같은 오류 얻을 : 분명히PortAudio가 다른 오디오 프로그램과 잘 작동하지 않는 이유는 무엇입니까? 또는 어떻게받을 수 있습니까? 다른 오디오 프로그램 (일반적으로 파이어 폭스) 내 프로그램을 실행하려고 할 때 실행하는 경우

PaHost_OpenStream: could not open /dev/dsp for O_WRONLY 
PaHost_OpenStream: ERROR - result = -10000 
An error occured while using the portaudio stream 
Error number: -10000 
Error message: Host error. 

을 , 이것은 다른 프로그램이 소리를 사용하고있을 때 작동하지 않기 때문에 내 프로그램이 꽤 쓸모 없게 만든다. 이 문제를 해결할 방법이 있습니까? 아니면 PortAudio를 사용하지 않아야합니까?

답변

4

요즘 가장 큰 Linux 배포판에서 사운드 카드 공유에 사용되는 사운드 서버 인 PulseAudio와 PortAudio가 작동하도록 "pulse"라는 장치를 선택해야합니다. 오류 메시지는 카드 공유를 전혀 지원하지 않는 OSS/dev/dsp 인터페이스를 사용하려고 함을 나타냅니다.

당신은 장치 목록이 같은 코드를 사용할 수 있습니다

for (int i = 0, end = Pa_GetDeviceCount(); i != end; ++i) { 
    PaDeviceInfo const* info = Pa_GetDeviceInfo(i); 
    if (!info) continue; 
    printf("%d: %s\n", i, info->name); 
} 

그런 다음 스트림 매개 변수 내에서 대해서 openStream에 대한 권리 수를 공급하고 있습니다.

PortAudio v19가 필요합니다. 구형 v18은 OSS 만 지원했습니다.

+0

아, 컴파일 시간 PortAudio v19 그러면 다음과 같을 것입니다. P –

+1

실제로 v19만으로도 문제가 해결 된 것 같습니다. 기본적으로 PulseAudio 백엔드를 선택해야합니다. –

+0

장치는 일반적으로 우분투에서 기본값이라고합니다. –