2011-08-01 9 views
1

내가 달성하기 위해 노력하고있어 기본적으로 : 어떻게하면 오디오 덩어리를 신속하게 반복 재생하고 Core Audio에서 샘플 값 (진폭/전력 레벨/등)을 결정할 수 있습니까? 다음과 같이

  1. 파일을 열고, 나는 X 샘플들로 파일을 분할 지속 시간
  2. 에 따라 필요한 얼마나 많은 '샘플'결정; 각 샘플의 (평균) 전력 레벨/진폭을 결정하십시오. 이러한 샘플 값을 사용
  3. ,

내가 꼼꼼하게 아무 소용와 온라인 포럼, 책, API를 통해 검색, 3 일 보냈다 (아마, these guidelines 다음) 오디오를 나타내는 파형을 그리기를 진행합니다. 나는 오디오의 청크 (버퍼)에 대한 전력 레벨을 결정하는 가장 중요한 단계에 머물러있다.

다가오는 Core Audio book의 대부분을 읽었으므로 AudioQueues, Audio Units 및 어느 정도는 OpenAL의 저수준 환경에 익숙해졌습니다. 그러나, 오디오 파일이 재생되거나 기록되는 동안 (즉, 실시간으로) 파워 레벨 값을 결정하는 모든 예제와 설명 (이 책과 웹의 다른 곳에서)은 모두 다루고 있습니다.

그러나 내 목적은 실시간으로 재생하지 않고도 디스크에서 주어진 파일의 이러한 값을 신속하고 효율적으로 결정하는 것입니다. 도서관이 필요로하는 기능에 대한 지침은 크게 감사하겠습니다.

감사합니다.

+0

당신은 이것을 알아 냈습니까? 동일한 문제점에 붙어 있습니다. – tommys

답변

1

이것을 달성 할 수있는 방법이 몇 가지 있습니다. 전체 파일을 메모리로 읽어 들인 다음 분석을 적용 할 수 있습니다. 또는 파일 청크를 읽고 AudioFile.h에서 AudioFileReadPackets (...)를 사용하여 각 청크의 평균 레벨을 얻으십시오.

0

어떤 부분에 붙어 있습니까? 나는 아직 파일을 읽거나 쓰는 일을하지 않았으므로 다른 사람이 그 면면을 도울 수 있습니다. 그러나 실제로 오디오 스트림을 처리하는 측면에서 가속 프레임 워크를 사용하려고합니다. 여기에는 필요한 데이터를 가져 오는 기능이 포함되어 있습니다. 파워 레벨을 얻으려면 먼저 신호를 FFT해야하는지 확신 할 수 없습니다.

가속화 프레임 워크로 FFT를 수행하는 방법에 대한 답변이 Using the Apple FFT and Accelerate Framework입니다.

필자는 기능 목록을 살펴 보았습니다. 신호에서 피크 및 평균 전력을 찾는 기능이 있습니다. 이러한 기능을 사용하려면 오디오 신호를 수레로 읽는 것이 좋습니다.