2014-03-04 4 views
0

OpenAL을 사용하여 NPAPI 플러그인 (브라우저 플러그인)에서 네트워크 스트리밍 사운드를 재생합니다. 두 개 이상의 브라우저 탭을 열면 탭 중 하나를 닫고 다른 탭도 닫습니다. 누구든지 나 한테 도움을 줄 수 있니? 또는 누군가가 마이크 나 그와 같은 장치의 오디오와 같은 스트림 오디오를 재생할 때 조언을 해줄 수 있습니다. 오디오 대기열 서비스를 사용하면 다중 인스턴스를 여전히 출력 할 수 없습니다. 업무상 이유로 코드를 붙여 넣을 수 없습니다. 죄송합니다. 내가 OpenAL에 애플의 개발자의 예로 어떤 방법 사용 - oalTouch을 링크가 https://developer.apple.com/library/ios/samplecode/oalTouch/Introduction/Intro.htmlOpenAL 재생 사운드, dealloc 한 인스턴스, 다른 모든 사운드가 표시 되었습니까?

가 나는 장치를 열 수 alcOpenDevice (NULL)을 사용 즉, 소리를 재생하는 시스템 기본 장치를 사용합니다.

답변

0

이제 이유를 발견했습니다. OpenAL은 멀티 오디오 소스를 지원하지만 oalTouch 예제로 사용하면 아무 것도 변경하지 않았습니다. 하나의 브라우저 탭을 닫는 이유는 플러그인 인스턴스를 파괴 할 때 장치가 닫히는 소리가 멈추었 기 때문입니다. 그래서 다중 인스턴스에서 사용하고 싶다면주의 깊게 디자인해야합니다. 이것은 디자인입니다. static var을 사용하여 기본 장치가 열려 있는지 여부를 나타냅니다. 열면 다시 열지 않습니다 (alOpenDevice 사용). (NULL) 메소드). 하지만 다른 탭의 경우, 다른 sourceId (alGenSource (...) 메서드가 사용됩니다)를 사용합니다. 브라우저의 teb를 닫으면 플러그인 인스턴스도 파괴됩니다. 정적 변수를 사용하여 플러그인 인스턴스가 기본 오디오 장치를 사용하는지 확인합니다. 그렇다면 아무 것도하지 않고 그렇지 않으면 장치를 닫습니다.

0

플러그인이있는 페이지가 닫히면 해당 플러그인 인스턴스가 삭제됩니다. 브라우저에서 동시에 활성화되는 플러그인 당 하나의 인스턴스가 있습니다. 아마도 문제는 플러그인 인스턴스를 해체하는 작업에서 글로벌 무언가를 찢어 버리는 것입니다.

코드가하는 일에 대해 아무 것도 볼 수 없으면 어떻게 그 사람이 무엇인지 알아낼 수있는 방법을 알기가 어렵습니다.

+0

OpenAL에 대한 정보는 거의 찾을 수 없으며 사과 예제 (oalTouch) 만 사용합니다. 아니, 그 이유를 찾았습니다. 플러그인 인스턴스마다 자체 openal 객체를 사용했기 때문에 초기화 할 때 기본 오디오 장치를 열고 릴리스 할 때 장치를 닫도록 설계했기 때문입니다. 장치의 상태를 확인하고 다른 플러그인 인스턴스를 구별하기 위해 다른 sourceId를 사용해야합니다. 다른 플러그인이 장치를 사용하지 않을 때 닫으십시오. 이러한 변경 작업이 끝나면 이제 여러 탭을 지원합니다. 대답 해줘서 고마워. –