2011-08-10 2 views
0

여러 사운드를 재생 중이며 순서대로 (임의의 순서로) 재생해야하므로 한 곡이 끝나면 다음 곡을 시작해야합니다.iOS AudioServicesAddSystemSoundCompletion 콜백에 1 초의 지연이 발생했습니다.

AudioSvicesAddSystemSoundCompletion 콜백 절차를 사용하여 SystemSoundID로 지정된 사운드 파일의 재생이 완료되었는지 확인합니다. 이 시점에서 정적 C 콜백 메소드가 히트 한 다음 인스턴스로 다시 호출하여 다른 사운드를 재생합니다.

그러나 오디오 마무리와 콜백 함수가 충돌하는 데 1 초 지연이 있습니다.

끝 부분에 여유 공간이 없도록 오디오가 잘립니다. NSLog를 몇 가지 주요 장소에두고 첫 번째 사운드가 재생됩니다. 나머지 코드는 아무 것도하지 않습니다. 단지 '입력'을 기다린 다음 콜백이 오디오가 끝난 후 1 초가 지나면 정상적으로 작동합니다.

공식 문서를 살펴본 결과 아무 이유없이 찾을 수 없으며 10 분 내에 모든 해결책이 제공됩니다.

누구든지 아이디어가 있으십니까?

감사

답변

0

내가 지연에 대해 알고하지 않습니다, 나는 그것을 경험 한 적이있다. 하지만 아마도 this을 시도해 볼 수 있습니다. SystemSoundID에 대한 객관적인 래퍼이며 완료 콜백을 포함하여 해당 기능의 일부입니다. C 함수 대신이 함수를 사용하는 것이 더 쉬워야합니다.

0
이 글을 읽는 사람들에게

죄송합니다,하지만 시간 제약이 때문에 하단에 도착하는 애플과 지원 요청을 사용하고 대답을 믿지 않을 것 ...

는 지연이 없습니다. (스푼/뭐든간에)

문제는 우리가 잘라내어 오디오 파일을 잘라내어 내보내는 데 사용한 응용 프로그램의 UI '기능'때문입니다 ... GarageBand.

GarageBand에서 오디오 트랙을 다듬어 원하는 사운드 만 표시하고 재생할 때까지 (루프를 돌릴 때까지) 해당 트랙을 .aif 파일로 내보낼 때까지 ... 표시되거나 경고없이 표시됩니다. - 트랙의 손질 된 부분과 잘라낸 부분 모두 BACK !!!

그래서 나중에 GB 일 후에 트랙을 다시 열어도 잘린 곡은 자른 트림 버전입니다. 그러나 트리밍은 파일의 메타 데이터 일뿐입니다. 마치 iTunes가 트리밍하는 것처럼 ... 전혀 의미가 없습니다.

그래서 모든 오디오 편집 및보다 정확한 오디오 응용 프로그램에 재수출해야했다 -

애플이 이러한 소리 플레이에 대한 콜백 스레드가 낮은 우선 순위 스레드 언급 않았다 ... 대담,하지만 우리 아직도 그런 멈춤을 보지 말아야했습니다.

이유를 생각해 보려는 사람, 특히 위의 포스터는 시도하고 도움을 주셔서 감사합니다.