Получение музыкальных данных iPod-трека

Как я могу получить контент (исходные/выборочные данные) iPod-трека? Я видел такие приложения, как "Ringtone Designer" и iMovie, которые могут это сделать, но я понятия не имею, какой api они используют или что они делают. Я могу представить, что iMovie использует private apis, но "Ringtone Designer" - стороннее приложение, поэтому оно должно быть возможным с помощью публичных api-функций.

Ответ 1

Я не делал этого сам, но, согласно документации, это шаги (примерно):

  • Создайте MPMediaQuery для извлечения одного или нескольких объектов MPMediaItem из библиотеки iPod.
  • Запросите эти элементы мультимедиа для своего URL-адреса с помощью -[MPMediaItem valueForProperty: MPMediaItemPropertyAssetURL].
  • Создайте AVURLAsset из URL.
  • Создайте экземпляр AVAssetReader для актива.
  • Создайте один или несколько экземпляров AVAssetReaderTrackOutput (по одному для каждого трека ресурса) и добавьте их в считывающее устройство с -[AVAssetReader addOutput:].
  • Вызов -[AVAssetReader startReading].
  • Вызовите -copyNextSampleBuffer для каждого из ваших объектов AVAssetReaderTrackOutput, пока вы не прочтете все данные.

Подробнее см. документацию ко всем этим классам.