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