Уважаемые знатоки 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 }
Подскажите, пожалуйста, направление поиска решения данной проблемы (готовое предпочтительней). Заранее благодарен.
|