Воспроизведение аудио с использованием URL-адреса не работает на iOS7

В моем приложении у меня есть аудио-адрес. Я хочу воспроизвести аудио, используя этот URL-адрес на своем устройстве. Кажется, это не работает.

Вот код, который я использую.

- (IBAction)play:(id)sender {

     NSURL *url = [NSURL URLWithString:@"http://jesusredeems.in/media/Media Advt/mp3_player/Songs/viduthalaiyin geethangal_vol1/93.Ellame Koodum.mp3"];

     NSData *data = [NSData dataWithContentsOfURL:url];

     AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:nil];

     [audioPlayer play];
}

Я использовал приведенный выше код. Это не работает. Пожалуйста, скажите мне, где я ошибаюсь в приведенном выше коде.


person Shanthanu    schedule 30.05.2014    source источник


Ответы (2)


Вам нужно добавить процентное экранирование в строку запроса, а также объявить AVAudioPlayer глобальной переменной.

Итак, напишите свойство в расширении вашего класса:

@property (nonatomic, strong) AVAudioPlayer *audioPlayer;

И измените свой метод, например:

- (IBAction)play:(id)sender
{
     NSString *urlstr = @"http://jesusredeems.in/media/Media Advt/mp3_player/Songs/viduthalaiyin geethangal_vol1/93.Ellame Koodum.mp3";
     urlstr = [urlstr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     NSURL *url = [NSURL URLWithString:urlstr];
     NSData *data = [NSData dataWithContentsOfURL:url];
     _audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:nil];
     [_audioPlayer play];
}
person Midhun MP    schedule 30.05.2014
comment
@Midhum MP, я использовал ваш код, звук не воспроизводится, просто показывает кнопку, выбранную на несколько минут, она не работает. - person Shanthanu; 30.05.2014
comment
@Midhum MP играет, но игра занимает слишком много времени, есть ли способ ускорить игру? - person Shanthanu; 30.05.2014
comment
@ user3614966: Это занимает слишком много времени, потому что вы загружаете файл синхронным методом, вам нужно что-то вроде потоковой передачи звука. - person Midhun MP; 30.05.2014
comment
@Midhum MP, пожалуйста, предложите мне, как сделать потоковое аудио, потому что я новичок в разработке iOS. - person Shanthanu; 30.05.2014
comment
@ user3614966: Вы можете использовать код, упомянутый здесь: stackoverflow.com/questions/11716244/ - person Midhun MP; 30.05.2014
comment
Я также хочу воспроизвести песню в формате mp3 с заданного URL. Я следовал всем кодам всеми возможными способами, но песня просто не воспроизводится. и я также сослался на ваш код, но ничего не произошло. поэтому, пожалуйста, помогите мне, как мне воспроизвести песню, используя URL-ссылку. - person Moxarth; 21.09.2017
comment
@Moxarth: Вы получаете какую-либо ошибку? Можете ли вы опубликовать новый вопрос с проблемой, с которой вы столкнулись? - person Midhun MP; 22.09.2017
comment
проблема решена. Благодарю . ваш код работает. у меня были некоторые проблемы с сетью, а затем ошибка appTransportSecurity, просто я использовал AVPlayer вместо AVAudioPlayer, и тогда он начал работать. большое спасибо. - person Moxarth; 22.09.2017

Вам нужно добавить процентную кодировку %20 пробела в URL

  NSString *strURl=@"http://jesusredeems.in/media/Media Advt/mp3_player/Songs/viduthalaiyin geethangal_vol1/93.Ellame Koodum.mp3";
        NSURL *url = [NSURL URLWithString:[strURl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

если все еще не работает, используйте методы делегата

audioPlayer = self;

Используйте методы делегирования

 -(void)audioPlayerDecodeErrorDidOccur:
    (AVAudioPlayer *)player
                                    error:(NSError *)error
    {
        NSLog(@"%@",error);
    }
person Sunny Shah    schedule 30.05.2014
comment
Шань, я использовал ваш код, его звук не воспроизводится, он просто показывает кнопку, выбранную на несколько минут, она не работает - person Shanthanu; 30.05.2014
comment
Шан играет, но игра занимает слишком много времени, есть ли способ ускорить игру? - person Shanthanu; 30.05.2014
comment
это зависит от подключения к Интернету, но вы можете использовать фоновый поток, поэтому он не повлияет на основной поток. - person Sunny Shah; 30.05.2014
comment
Шан, пожалуйста, скажите, предложите мне несколько идей о фоновом потоке, как это сделать здесь, так как я новичок в разработке ios, я не знаю об этих вещах. - person Shanthanu; 30.05.2014