Подтвердить что ты не робот

Как обрабатывать код ошибки -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.)"

Я также проверил, что файл присутствует в этом месте. Каждый раз, когда я перезапускаю свое приложение, я получал такую ​​же ошибку для воспроизведения песни. Через некоторое время, когда я попытался запустить тот же код, мой плеер просто отлично работает без ошибок.

Может ли кто-нибудь сказать мне, как справиться с этой ошибкой?

Кроме того, может ли кто-нибудь объяснить мне, в чем проблема?

4b9b3361

Ответ 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". Когда я запускаю приложение в симуляторе, все в порядке, потому что (я не знаю, почему) симулятор не чувствителен к регистру. Когда вы запускаете тот же код на устройстве, в этом случае будет происходить ошибка.