¿Cómo get las dimensiones / calidad de video disponibles de un video url iOS?

Estoy creando un reproductor de video personalizado usando AVPlayer en ios (OBJECTIVE-C). Tengo un button de configuration que onclick mostrará las dimensiones de video disponibles y los formattings de audio. A continuación se muestra el layout:

introduzca la descripción de la imagen aquí

Entonces, quiero saber:

1). ¿Cómo get las dimensiones disponibles de una url de video (no un video local)?

2) Incluso si puedo get las dimensiones, ¿puedo cambiar entre las dimensiones disponibles mientras juego en AVPlayer?

¿Alguien puede darme una pista?

Si no es un video HLS (transmisión), puede get información de resolución con el siguiente código.

Código de muestra:

// player is playing if (_player.rate != 0 && _player.error == nil) { AVAssetTrack *track = [[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo] firstObject]; if (track != nil) { CGSize naturalSize = [track naturalSize]; naturalSize = CGSizeApplyAffineTransform(naturalSize, track.prefernetworkingTransform); NSInteger width = (NSInteger) naturalSize.width; NSInteger height = (NSInteger) naturalSize.height; NSLog(@"Resolution : %ld x %ld", width, height); } } 

Sin embargo, para el video HLS, el código anterior no funciona. Lo he resuelto de una manera diferente. Cuando jugué un video, obtuve la image del video y calculé la resolución de eso.

Aquí está el código de ejemplo:

 // player is playing if (_player.rate != 0 && _player.error == nil) { AVAssetTrack *track = [[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo] firstObject]; CMTime currentTime = _player.currentItem.currentTime; CVPixelBufferRef buffer = [_videoOutput copyPixelBufferForItemTime:currentTime itemTimeForDisplay:nil]; NSInteger width = CVPixelBufferGetWidth(buffer); NSInteger height = CVPixelBufferGetHeight(buffer); NSLog(@"Resolution : %ld x %ld", width, height); } 

Como mencionaste que no es un video local, puedes invitar a un service web para devolver las dimensiones de video disponibles para ese video en particular. Luego de eso, cambia la URL a otro video disponible y busca la position actual.

Recomendar esto