문제

Remoteio / Audiounit을 사용하여 압축되지 않은 파일 대신 MP3를 재생하고 싶습니다. 압축되지 않은 파일을 사용하면 너무 많은 디스크 공간 (30MB 대 3MB의 경우 MP3)을 사용합니다.

이것이 가능합니까? 그렇다면 작은 코드 헤드 스타트를 제공 할 수 있습니까?

대단히 감사합니다.

도움이 되었습니까?

해결책

예, 가능합니다. 그러나 여러 오디오 API 사용과 여러 스레드가 필요합니다.

오디오 장치 버퍼 콜백 스레드의 실시간 제약으로 인해 압축 파일을 오디오 장치 콜백 외부의 원시 PCM 샘플로 변환 할 수 있습니다. 확장 오디오 파일 서비스 또는 AvassetReader를 사용하여 오디오 장치 콜백 외부의 압축되지 않은 샘플로 변환 할 수 있습니다. 그러나 전체 파일을 한 번에 압축 할 필요는 없습니다. 오디오 장치 콜백 버퍼 소비 속도보다 훨씬 앞서 계속 채우는 한, 1 초의 단락의 짧은 압축 버퍼는 아마도 가능할 것입니다. 이것은 버퍼 소비를 모니터링하는 별도의 타이머 구동 스레드에서 수행 할 수 있으며, 그에 따라 충분한 오디오를 링 버퍼 또는 원형 FIFO로 압축 해제합니다.

당신이 끝날 것인지는 오디오 큐 API 레이어의 다시 쓰기와 유사하지만 더 사용자 정의 가능성이 있습니다.

다른 팁

얼마나 낮은 수준으로 가고 싶습니까? AudioHardware API를 사용할 수 있습니다.

err = AudioDeviceAddIOProc(deviceID, ioProc, self);

그리고 ioproc에서 버퍼를 직접 채우고 하드웨어 변경을 듣고 실시간 스레딩 및 기타 많은 저수준을 처리합니다.

나는 당신이 이미 AudioConverter로 MP3 데이터를 디코딩하고 있다고 가정하고 그것을 수행하는 방법을 알고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top