2012-04-03 2 views
2

하나의 오디오를 다른 채널의 무음을 재생하는 2 개의 채널을 재생하려고합니다.다른 인스턴스에서 멀티 채널 오디오를 재생할 때 오류가 있습니까?

$ gst-launch \ 
    interleave name=i ! alsasink 
    filesrc location=/home/test1.mp3 \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! i. \ 
    audiotestsrc wave=silence \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! volume volume=1.0 ! i. 

10 초 후 나는 두 번째 채널의 첫 번째 오디오 및 일부 오디오를 재생하려고합니다.

$ gst-launch \ 
    interleave name=i ! alsasink \ 
    audiotestsrc wave=silence \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! i. \ 
    filesrc location=/home/test2.mp3 \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! volume volume=1.0 ! i. 

이 작업은 두 개의 다른 터미널에서 파이프 라인을 재생하거나 백그라운드에서 실행하는 동안 PC 측에서 수행 할 수 있습니다. 하지만 am335x 보드에 하나 개의 파이프 라인을 연주하고, 다른 하나는이 같은 그 뭔가 재생하려고 할 때 우리가 gstalsasink.c에서 확인할 때

Setting pipeline to PAUSED ... 
ERROR: Pipeline doesn't want to pause. 
ERROR: from element /GstPipeline:pipeline0/GstAlsaSink:alsasink0: Could not open audio device for playback. 
Device is being used by another application. 
Additional debug info: 
gstalsasink.c(697): gst_alsasink_open(): /GstPipeline:pipeline0/GstAlsaSink:alsasink0: 
Device 'default' is busy 
Setting pipeline to NULL ... 
Freeing pipeline ... 

이 비 블록 모드 snd_pcm_open 호출합니다.

CHECK (snd_pcm_open (&alsa->handle, alsa->device, SND_PCM_STREAM_PLAYBACK, 
     SND_PCM_NONBLOCK), open_error); 

왜 다른 이벤트가 오디오 장치를 사용하지 못하도록 차단합니까?

PC 측 alsasink가 완벽하기 때문에 누구든지 나를 위해 목표를 위해 무엇을 제안 할 수 있습니까?

답변

1

임베디드 하드웨어에서 alsa 장치를 닫을 때 약간의 지연이있을 수 있습니다. 어떤 프로세스가 아직 열렸는지 퓨저로 확인하십시오. 또한 gnonlin을 사용하여 스트림의 순차 재생을 개발하는 것도 고려하십시오. 이렇게하면 기존 오디오 싱크가 다시 사용됩니다.

+0

gnonlin은 시간이 지나면 두 번째 파이프 라인을 재생해야한다는 실시간 시나리오가 명확하지 않기 때문에 필자의 요구 사항을 충족시키지 못합니다. 침묵 된 채널이있을 수있는 임의의 향후 상황이 다른 오디오를 재생할 필요가 있습니다. 그리고 PC 쪽에서 같은 파이프 라인을 사용하는 것이 얼마나 좋은지, 타겟 보드에서 던지는 오류. – Minion

+0

좋아요, 그래서 유스 케이스는 라디오 스트림과 비슷합니다. 어디서 발표를 과장하고 싶습니까? – ensonic

+0

예. 첫 번째 채널에서 오디오가 한 개만 방송되는 것과 같으며 지금까지 조용한 두 번째 채널에서 다른 발표를 시작하고 싶습니다. 오류가 발생하면 "기기 사용 중"입니다. – Minion

관련 문제