Как обрабатывать код ошибки -43 из NSOSStatusErrorDomain при инициализации объекта AVAudioPlayer?
Я наблюдал странное поведение при работе с AVAudioPlayer
Ниже приведен код:
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",fileName]] error: &error];
В этом я загрузил файл с сервера и сохранил его в каталоге Cache приложения.
Я получаю следующую ошибку:
Error in playing =
Domain = NSOSStatusErrorDomain
Code = -43
Description = Error Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be completed. (OSStatus error -43.)"
Я также проверил, что файл присутствует в этом месте.
Каждый раз, когда я перезапускаю свое приложение, я получал такую же ошибку для воспроизведения песни.
Через некоторое время, когда я попытался запустить тот же код, мой плеер просто отлично работает без ошибок.
Может ли кто-нибудь сказать мне, как справиться с этой ошибкой?
Кроме того, может ли кто-нибудь объяснить мне, в чем проблема?
Ответы
Ответ 1
У меня была такая же ошибка с этим кодом, хотя я мог проверить, что songCacheURL действителен и что файл доступен:
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:songCacheURL error:&error];
Я смог исправить проблему, сначала загрузив файл в элемент NSData, а затем используя это для инициализации AVAudioPlayer, например:
NSData *songFile = [[NSData alloc] initWithContentsOfURL:songCacheURL options:NSDataReadingMappedIfSafe error:&error1 ];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error2];
Я надеюсь, что это поможет кому-то другому.
Робин
Ответ 2
AVAudioPlayer не поддерживает потоковое вещание через HTTP. Вместо этого попробуйте использовать AVPlayer.
Ответ 3
У меня была аналогичная проблема. Как оказалось, я инициализировал url только с именем файла и опуская путь ресурсов пакета. Ваш url init должен выглядеть примерно так:
NSURL *url= [NSBundle URLForResource: @"my_sound" withExtension:@"mp3"];
Ответ 4
У меня была такая же ошибка, и оказалось, что URL-адрес был равен нулю.
Попробуйте проверить, есть ли ваш URL-адрес!= Nil.
Возможно, ваш путь неправильный.
Ответ 5
У меня была аналогичная проблема с AVAudioPlayer
при использовании URL-адреса на основе локального файла. Как было установлено, возникла проблема с неправильным именем файла, я просто не заметил ведущего пробела в его имени. Поэтому прежде всего просто проверьте свои URL-адреса внимательно.
Ответ 6
У меня была аналогичная проблема, проблема заключалась в том, что флажок для целевого членства в файле mp4 был снят, после того как я проверил его, файл играл отлично.
Ответ 7
У меня была такая же проблема, и я решил это сейчас. Проблема заключалась в имени mp3 файла. В коде было имя файла "Yes.MP3", но имя файла "Yes.mp3". Когда я запускаю приложение в симуляторе, все в порядке, потому что (я не знаю, почему) симулятор не чувствителен к регистру. Когда вы запускаете тот же код на устройстве, в этом случае будет происходить ошибка.