2011-12-28 4 views
3

iOS Developer's Library과 비슷한 AUGraph를 구현했습니다. 그러나 내 응용 프로그램에서는 다른 샘플 속도 (아마도 다른 두 가지 사운드)에서 사운드를 재생할 수 있어야합니다.iOS에서 AUGraph의 샘플 속도 변경하기

저는 Apple의 설명서를 둘러 보았으며 런타임에 샘플 속도를 설정할 방법을 찾지 못했습니다. 나는 세 가지 가능한 해결 방법을 생각 해왔다.

  1. 샘플 속도를 변경해야 할 때마다 AUGraph를 다시 초기화한다.
  2. 각기 다른 샘플 속도에 대해 다른 AUGraph를 초기화하십시오.
  3. 재생하기 전에 모든 사운드의 샘플 속도를 변환하십시오.

이러한 방법은 모두 프로세서에서 너무 거칠고 무거워 보입니다.

런타임시 AUGraph의 샘플 속도를 변경하는 가장 좋은 방법은 무엇입니까?

+0

몇 가지 테스트를 거친 후 AUGraph를 다시 초기화하는 것이 좋지 않은 것으로 나타났습니다. 나는 지금 # 1을 따라갈 것이고 아마도 미래의 # 2로 바꿀 것입니다. 모두에게 감사드립니다! – rahzark

답변

1

일반적으로 연속적인 오디오 스트리밍 시나리오에서는 # 1입니다.

  • # 2 :

    프로그램은이 목록에있는 다른 방법을 사용하여 특별한 필요 나 이익이있을 수 있습니다 당신은 재 초기화가 문제가되지이다 처리해야합니다.

  • # 3 : 특히 신호를 여러 번 SRCing하는 경우 서로 다른 입력 샘플 속도로 두 스트림을 함께 처리하고 처리해야합니다.

그러나 SRC로 재생해야하는 경우 가장 낮은 대기 시간은 중요하지 않지만 대신 AudioQueue를 사용해 볼 수 있습니다.

0

저는 런타임에 수행 할 수 없다고 확신합니다. 해결책 # 2가 # 3과 함께 최선의 방법입니다. 샘플 속도 변환을 위해 libsndfile은 아마도 사용자의 요구에 맞게 조정될 수 있습니다.

+0

리샘플링은 런타임에 수행 할 수 있습니다. iOS 5에는 리샘플링을 할 수있는 새로운 오디오 장치가있을 수 있습니다. – hotpaw2

0

지연 시간을 줄이고 오디오 그래프를 다시 작성하지 않으려면 사운드 데이터를 다시 샘플링해야 할 수 있습니다 (단 하나의 샘플링 속도 제외).

사운드 데이터를 재생하기 전에 리샘플링하거나 오디오 리 그래프의 일부로 리얼 타임 리샘플링을 실행할 수 있습니다. 많은 iOS 뮤직 앱은 내장 된 샘플러 기반 신디사이저의 일부로 후자를 처리하기 때문에 장치에 많은 계산 기능이 있습니다.