AVURLAsset no se puede cargar con un file remoto

Tengo un problema al usar AVURLAsset.

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

En el bloque de finalización, el estado es AVKeyValueStatusFailed y el post de error es "Can not Open". Todos los ejemplos que he visto utilizan un file local, así que tal vez haya un problema al usar un file remoto …

Saludos, Quentin

No puede crear directamente un AVURLAsset para una transmisión HTTP en vivo como se indica en la Guía de progtwigción de AV Foundation de Apple. Tendrás que crear un AVPlayerItem con la url de la secuencia e instanciar un AVPlayer con ella

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

Si necesita tener acceso a AVURLAsset detrás, puede seguir estos pasos.

Paso 1 / regístrate para los cambios de la propiedad de status del elemento del jugador

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

Paso 2 / en observeValueForKeyPath:ofObject:change:context:

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"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; } } } 

EDITAR : corrigió la respuesta