Как уже упоминалось, это связано с URL файла. Код AudioStreamer специально проверяет расширение файла и пытается выяснить тип аудио на основании этого. Если вы измените эту логику для обработки своих пользовательских URL, она начнет работать
Чтобы указать вам правильное направление: откройте AudioStreamer.m и найдите ссылки на
hintForFileExtension:
Эта функция возвращает тип файла на основе расширения. Если вы знаете, что тип файла не изменится (всегда mp3), быстрое и грязное решение состоит в том, чтобы всегда назначать тип mp3 без какой-либо логики ... как это:
err = AudioFileStreamOpen(self, MyPropertyListenerProc, MyPacketsProc, kAudioFileMP3Type, &audioFileStream);
Примечание: я поместил константу kAudioFileMP3Type вместо вычисленного значения
PS Да, он работает со статическими mp3-файлами, даже если он предназначен для потоков и поэтому пропускает некоторые функции, которые можно ожидать от проигрывателя, который воспроизводит статический файл на сервере (кэширование, предварительная выборка, правильный поиск)