Уважаемые знатоки Linux, подскажите пожалуйста, как использовать ALSA для чтения данных с микрофона/линейного входа из двух приложений одновременно?
Дано: сетевая камера и самодельное приложение для неё.
Если камера "стримит" без звука (MJPEG), то приложение работает. Стоит переключить её на H.264 - приложение не запускается и наоборот: если вначале запустить приложение, камера не переключается на поток со звуком.
Аналогичная ситуация и при использовании "arecord" на камере: ИЛИ звук в потоке ИЛИ приложение ИЛИ "arecord".
Arecord вываливается с сообщением: <arecord: main:654: audio open error: Device or resource busy>
В моём приложении участок кода:
if ((err = snd_pcm_open (&capture_handle,"default", SND_PCM_STREAM_CAPTURE,
SND_PCM_ACCESS_MMAP_NONINTERLEAVED
)) < 0) {
printf("Error in ALSA snd_pcm_open: %i -> %s\n",err,snd_strerror (err));
return 1;
}
возвращает: <Error in ALSA snd_pcm_open: -16 -> Device or resource busy>
Файл /etc/asound.conf содержит:
pcm.audiosource0 {
type route
slave {
pcm "hw:0,0"
channels 2
}
ttable {
0.0= 1
0.1= 1
1.1= 1
1.0= 1
}
}
ctl.audiosource0 {
type hw
card 0
}
Подскажите, пожалуйста, направление поиска решения данной проблемы (готовое предпочтительней).
Заранее благодарен.