avplayer is not playing the URL

前端 未结 5 1448
长情又很酷
长情又很酷 2021-02-04 15:00

I am using avplayer for play audio url, but it is not working, I don\'t know where i am wrong

NSString *radioURL = @\"https://www.example.com\";

radioPlayer = [         


        
相关标签:
5条回答
  • 2021-02-04 15:26

    Did you forgot to set the attribute App Transport Security Settings -> Allow Arbitrary Loads (Yes)?

    App Transport Security Settings

    0 讨论(0)
  • 2021-02-04 15:36

    I had the same issue and just realized that I wasn't retaining the player (using ARC)! So it gets deallocated and stop playing immediately after start.

    You need to make sure that you have a strong property radioPlayer and use self.radioPlayer instead of radioPlayer.

    0 讨论(0)
  • 2021-02-04 15:44

    I strongly recommended the code below to play radio streaming: please take a look also AVPlayer_Class

     -(void)Play{
            NSString *radioURL = @"https://www.example.com"; //this url must valid 
            AVPlayer *player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:radioURL]];
            self.songPlayer = player;    //self.songPlayer is a globle object of avplayer
            [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(playerItemDidReachEnd:)
                                                         name:AVPlayerItemDidPlayToEndTimeNotification
                                                       object:[songPlayer currentItem]];
            [self.songPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];
    }
    
    
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    
            if (object == songPlayer && [keyPath isEqualToString:@"status"]) {
                if (songPlayer.status == AVPlayerStatusFailed) {
                    NSLog(@"AVPlayer Failed");
    
                } else if (songPlayer.status == AVPlayerStatusReadyToPlay) {
                    NSLog(@"AVPlayerStatusReadyToPlay");
                    [self.songPlayer play];
    
    
                } else if (songPlayer.status == AVPlayerItemStatusUnknown) {
                    NSLog(@"AVPlayer Unknown");
    
                }
            }
        }
    
    - (void)playerItemDidReachEnd:(NSNotification *)notification {
    
         //  code here to play next sound file
    
        }
    

    Ref link is - Streaming mp3 audio with AVPlayer

    0 讨论(0)
  • 2021-02-04 15:44

    You are doing good but your method need to correct on one place.Check using the below method:

    NSURL *audioURL = [NSURL URLWithString:radioURL];
    NSData *audioData = [NSData dataWithContentsOfURL:audioURL];
    self.audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:nil];
    self.audioPlayer.numberOfLoops = -1;
    self.audioPlayer.delegate = self;
    [self.audioPlayer prepareToPlay];
    self.audioPlayer.volume=1.0;
    [self.audioPlayer autorelease];
    [self.audioPlayer Play];
    

    and add proper delegate methods for AVAudioPlayer.

    0 讨论(0)
  • 2021-02-04 15:45

    Make Sure URL is AddingPercentEscapes.

    NSURL *audioURL = // Your Url;
    NSString *encodedString = [@"Your Url" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *myURL = [[NSURL alloc] initWithString:encodedString]
    AVPlayer *player = [AVPlayer playerWithURL:myURL];
    [player prepareToPlay];
    player play];
    
    0 讨论(0)
提交回复
热议问题