Existe-t-il un moyen d'accéder à l'URL à partir d'un objet AVPlayer qui a été initialisé avec une URL, comme dans:
NSURL *url = [NSURL URLWithString: @"http://www.example.org/audio"];
self.player = [AVPlayer playerWithURL: url];
Un AVPlayer
joue un AVPlayerItem
. AVPlayerItem
s sont soutenus par des objets de la classe AVAsset
. Lorsque vous utilisez le playerWithURL:
méthode de AVPlayer
il crée automatiquement le AVPlayerItem
soutenu par un actif qui est une sous-classe de AVAsset
nommée AVURLAsset
. AVURLAsset
possède une propriété URL
.
Donc, oui, dans le cas où vous avez fourni, vous pouvez obtenir assez facilement le NSURL
de l'élément en cours de lecture. Voici un exemple de fonction expliquant comment procéder:
-(NSURL *)urlOfCurrentlyPlayingInPlayer:(AVPlayer *)player{
// get current asset
AVAsset *currentPlayerAsset = player.currentItem.asset;
// make sure the current asset is an AVURLAsset
if (![currentPlayerAsset isKindOfClass:AVURLAsset.class]) return nil;
// return the NSURL
return [(AVURLAsset *)currentPlayerAsset URL];
}
Pas un Swift expert, mais il semble que cela puisse être fait en Swift plus brièvement.
func urlOfCurrentlyPlayingInPlayer(player : AVPlayer) -> URL? {
return ((player.currentItem?.asset) as? AVURLAsset)?.url
}
Solution pour Swift 3
func getVideoUrl() -> URL? {
let asset = self.player?.currentItem?.asset
if asset == nil {
return nil
}
if let urlAsset = asset as? AVURLAsset {
return urlAsset.url
}
return nil
}
let url:URL? = (player?.currentItem?.asset as? AVURLAsset)?.url