2016-06-07 3 views
0

Быстрый обзор: Я разрабатываю настольное аудио приложение Mac Swift. Я столкнулся с ситуацией, которая, как мне кажется, требует, чтобы я попал в AudioToolbox C api, чтобы получить AudioFileMarkerList. Кажется, что это не поддерживается в любом из новых AVStuff, поэтому вам все равно нужно работать с API AudioToolbox.CoreAudio: правильный способ чтения AudioFileMarkerList?

Мне очень хотелось бы услышать от кого-то, кто столкнулся с этими C-структурами и даже лучше, связав их с Swift. Или, если есть еще один способ получить маркеры из звуковых файлов, которые мне не хватает, я тоже хотел бы это узнать.

ответ

1

Вот ответ, если кто-то столкнется с этим в будущем.

// get size of markers property (dictionary) 
UInt32   propSize; 
UInt32   writable; 

[EZAudioUtilities checkResult:AudioFileGetPropertyInfo(self.audioFileID, 
                 kAudioFilePropertyMarkerList, 
                 &propSize, 
                 &writable) 
        operation:"Failed to get the size of the marker list"]; 

size_t length = NumBytesToNumAudioFileMarkers(propSize); 

// allocate enough space for the markers. 
AudioFileMarkerList markers[ length ]; 

if (length > 0) { 
    // pull marker list 
    [EZAudioUtilities checkResult:AudioFileGetProperty(self.audioFileID, 
                 kAudioFilePropertyMarkerList, 
                 &propSize, 
                 &markers) 
         operation:"Failed to get the markers list"]; 

} else { 
    return NULL; 
} 

//NSLog(@"# of markers: %d\n", markers->mNumberMarkers); 
+0

Есть ли способ конвертировать это в Swift? Я пробовал все за неделю https://stackoverflow.com/questions/44743239/swift-retrieve-audio-file-marker-list-from-url – MysteryPancake

+0

Я нахожу, что имеет смысл оставить C-код в C, но он также должен работать быстро. Если я скоро смогу, я сделаю это для вас. –

+0

Большое спасибо, и удачи – MysteryPancake