2016-12-03 10 views
1

Я попытался воспроизвести аудио из потоковой передачи. Он работает нормально с некоторым URL-адресом, но для некоторых с некоторым URL-адресом (http://listen.radionomy.com/almightyradiohindi) он терпит неудачу, даже если статус игрока приходит = AVPlayerStatusReadyToPlay. Если я помещаю тот же URL-адрес, который не работает в браузере, тогда он тоже не работает. Но я думаю, что игрок не должен показывать статус как = AVPlayerStatusReadyToPlay. Я столкнулся с проблемой, чтобы справиться с этим. Например, как я знаю, для какого потокового URL-файла будет работать AVPlayer или нет?iOS - AVPlayer не потоковое аудио для некоторых URL

Мой код:

-(void)viewDidLoad { 
    NSURL *url = [[NSURL alloc] initWithString:urlString]; 
    AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; 
    AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset]; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    avPlayer = [AVPlayer playerWithPlayerItem:anItem]; 
    [avPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; 

} 

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if (object == avPlayer && [keyPath isEqualToString:@"status"]) { 

     if (avPlayer.status == AVPlayerStatusFailed) { 
      NSLog(@"\n\n **** AVPlayer Failed ***\n\n"); 
     } 

     else if (avPlayer.status == AVPlayerStatusReadyToPlay) { 
      NSLog(@"\n\n **** AVPlayer Ready to Play ****\n\n"); 
      [avPlayer play]; 

     } 
     else if (avPlayer.status == AVPlayerItemStatusUnknown) { 
      NSLog(@"\n\n **** AVPlayer Unknown \n\n ****"); 
     } 
    } 
} 
+0

NSURL * streamingURL = [NSURL URLWithString: URL_STRING]; NSLog (@ "% @", streamingURL); player = [AVPlayer playerWithURL: streamingURL]; [игровая игра]; –

+0

Вы поняли проблему? – Artur

ответ

0

, когда я открываю свой аудио URL (http://listen.radionomy.com/almightyradiohindi) в браузере он изменится (http://streaming.radionomy.com/AlmightyRadioHindi?lang=en-US%2cen%3bq%3d0.8%2cfa%3bq%3d0.6) , если вы можете получить точный URL и URL-кодирование его проблема будет решена

URL-кодирование быстрой 3,0:

var originalString = "test/test" 
var escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) 
print(escapedString!) 
+0

@ Хамид, измененный URL-адрес также не воспроизводится в браузере. Поэтому нет необходимости кодировать/декодировать здесь. –