Я делаю приложение для iOS. Одной из его особенностей является то, что он может сохранять записи и сохранять аудиофайлы.
Чтобы сохранить URL-адреса записанных аудиофайлов, я сохраняю их в NSUserDefaults как filePath следующим образом:
file:///var/mobile/Containers/Data/Application/17F8E799-D7E1-4B3C-9DFE-7BA48E346314/Documents/recordName.aif
Я использую библиотеку под названием «FVSoundWaveDemo», чтобы попытаться отобразить звуковую волну для записанного файла. Но у меня проблема с URL...
Пример в "FVSoundWaveDemo" загружает локально импортированный файл следующим образом:
NSString* filename = [NSString stringWithFormat:@"song1.m4a"];
NSURL* url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:nil]];
_soundWaveView.soundURL = url;
Вы видите бит с «song1.m4a», я хочу заменить его и заставить приложение использовать вместо этого URL-адрес filePath. Как и URL-адрес filePath, который я указал выше в своем вопросе.
Я пробовал всевозможные вещи, например, пытался «преобразовать» filePath в обычный URL-адрес, пытался использовать AVAssets и так далее. Но все, что я пытаюсь, просто приходит с этой ошибкой:
Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «*** -[__NSArrayM objectAtIndex:]: индекс 0 за пределами пустого массива»
И это потому, что библиотека, которую я использую, использует AVAssets следующим образом:
AVAssetReader* reader = [[AVAssetReader alloc] initWithAsset:songAsset error:&error];
AVAssetTrack* songTrack = [songAsset.tracks objectAtIndex:0];
NSDictionary* outputSettingsDict = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM],AVFormatIDKey,
[NSNumber numberWithInt:1],AVNumberOfChannelsKey,
[NSNumber numberWithInt:8],AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsNonInterleaved,
nil];
Итак, как мне заставить AVAsset работать только с URL-адресом filePath?
Помните, я пытаюсь заставить его просматривать записанный аудиофайл, сохраненный приложением, НЕ локально импортированный аудиофайл, который разработчик может добавить в проект Xcode.
Я застрял на этом уже несколько дней, если вы можете мне помочь, это было бы очень признательно, спасибо.
Спасибо за ваше время, Дэн.