Как обработать код ошибки -43 из NSOSStatusErrorDomain при инициализации объекта AVAudioPlayer? - PullRequest
22 голосов
/ 01 сентября 2010

Я наблюдал странное поведение при работе с 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.)"

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

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

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

Ответы [ 7 ]

27 голосов
/ 23 мая 2011

AVAudioPlayer не поддерживает потоковую передачу по HTTP. Попробуйте вместо этого использовать AVPlayer.

23 голосов
/ 05 мая 2012

У меня была та же ошибка с этим кодом, хотя я мог проверить, что 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];

Надеюсь, это поможет кому-то еще.

Robin

2 голосов
/ 31 декабря 2014

У меня была похожая проблема. Как оказалось, я инициализировал URL только с именем файла и пропустил путь к ресурсам пакета. Ваш URL-адрес должен выглядеть примерно так:

NSURL *url= [NSBundle URLForResource: @"my_sound" withExtension:@"mp3"];
0 голосов
/ 27 июня 2014

У меня была такая же проблема, и я решил ее сейчас.Проблема была в названии mp3 файла.В коде было имя файла «Yes.MP3», но имя файла «Yes.mp3».Когда я запускаю приложение в симуляторе, все в порядке, потому что (я не знаю почему) симулятор не чувствителен к регистру.Когда вы выполняете тот же код на устройстве, в этом случае произойдет эта ошибка.

0 голосов
/ 22 февраля 2014

У меня была похожая проблема, проблема заключалась в том, что мой флажок целевого членства в mp4-файле был снят, после того, как я его проверил, файл воспроизводился отлично.

0 голосов
/ 27 августа 2012

У меня была похожая проблема с AVAudioPlayer при использовании URL-адреса на основе локального файла. Как было установлено, проблема была в неправильном имени файла, я просто не заметил начальных пробелов в его имени. Поэтому прежде всего внимательно проверьте свои URL.

0 голосов
/ 12 апреля 2011

У меня была такая же ошибка, и оказалось, что URL был ноль. Попробуйте проверить, является ли ваш объект URL! = Nil. Может быть, ваш путь неправильный.

...