AVURLAsset ne peut pas charger avec un file distant

J'ai un problème en utilisant AVURLAsset.

NSSsortingng * const kContentURL = @ "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"; ... NSURL *contentURL = [NSURL URLWithSsortingng:kContentURL]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:contentURL options:nil]; [asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:^{ ... NSError *error = nil; AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error]; ... } 

Dans le bloc d'achèvement, l'état est AVKeyValueStatusFailed et le message d'erreur est "Can not Open". Tous les exemples que j'ai vus, utilisent un file local, donc peut-être qu'il y a un problème en utilisant un file distant …

Cordialement, Quentin

Vous ne pouvez pas créer directement un AVURLAsset pour un stream HTTP Live, comme indiqué dans le guide de programmation AV Foundation d' Apple. Vous devrez créer un AVPlayerItem avec l'URL du stream et l'instancier avec un AVPlayer

 AVPlayerItem *pItem = [AVPlayerItem playerItemWithURL:theStreamURL]; AVPlayer *player = [AVPlayer playerWithPlayerItem:pItem]; 

Si vous avez besoin d'accéder à AVURLAsset , vous pouvez suivre ces étapes.

Étape 1 / save pour les modifications de la propriété de status de l'élément de joueur

 [playerItem addObserver:self forKeyPath:@"status" options:0 context:nil]; 

Étape 2 / dans observeValueForKeyPath:ofObject:change:context:

 - (void)observeValueForKeyPath:(NSSsortingng *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToSsortingng:@"status"]) { AVPlayerItem *pItem = (AVPlayerItem *)object; if (pItem.status == AVPlayerItemStatusReadyToPlay) { // Here you can access to the player item's asset // eg: self.asset = (AVURLAsset *)pItem.asset; } } } 

EDIT : corrigé la réponse