2013-04-24 3 views
1

저는 방금 OpenAL로 작업하기 시작했습니다.OpenAL 소스로 오디오를 스트리밍하려면 어떻게해야합니까?

성공적으로 WAV 파일을로드하여 성공적으로 재생했습니다. 그것은 충분히 쉬웠다.

이제 전체 파일을로드하는 대신 OpenAL로 음악을 스트리밍 할 수 있어야합니다. 이것은 음향 효과 등에 좋지만, 아마 알고있는 것처럼 음악을하는 것은 매우 위험 할 수 있습니다.

문제는 Google에서 이와 관련하여 찾을 수없는 것 같습니다. OGG 파일을 스트리밍하는 것과 관련된 몇 가지 예를 찾았지만, 모든 음악 파일을 지원하는 시스템을 만드는 것이 훨씬 편합니다.

내가 이해하는 바에 따르면, OpenAL은이 기능을 내장해야합니다. 그러나 나는 그들을 찾을 수 없다.

그럼 내 질문은, 연주 한 파트를 제거하고 아직 가져 오지 않은 파트를 가져 오는 동안 오디오를 OpenAL 용 버퍼로 스트리밍하려면 어떻게해야합니까?

이 질문이 무식한 경우 사과드립니다.

답변

1

alSourceQueueBuffers()을 사용하면 소스에서 직접 연속적으로 재생할 버퍼를 대기열에 넣을 수 있습니다. 재생 중에 을 AL_BUFFERS_PROCESSED과 함께 사용하면 완전히 재생되어 재사용 할 수있는 버퍼 수를 얻을 수 있습니다. alSourceUnqueueBuffers()은 대기열에서 이러한 버퍼를 팝하므로 새 데이터로 채우고 다시 대기열에 넣을 수 있습니다.

기본적으로 스레드 잠깐 동안 잠들고, 새로운 사용 가능한 버퍼를 테스트하고, 데이터로 채우고, 큐에 저장하고 다시 잠자기 상태가됩니다.

SFML은 SoundStream class (C++)에서 이것을 구현하며 원하는 경우 참조로 볼 수 있습니다.

관련 문제