Accessing URL from AVPlayer object?
An AVPlayer
plays an AVPlayerItem
. AVPlayerItem
s are backed by objects of the class AVAsset
. When you use the playerWithURL:
method of AVPlayer
it automatically creates the AVPlayerItem
backed by an asset that is a subclass of AVAsset
named AVURLAsset
. AVURLAsset
has a URL
property.
So, yes, in the case you provided you can get the NSURL
of the currently playing item fairly easily. Here's an example function of how to do this:
-(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];}
Not a swift expert, but it seems it can be done in swift more briefly.
func urlOfCurrentlyPlayingInPlayer(player : AVPlayer) -> URL? { return ((player.currentItem?.asset) as? AVURLAsset)?.url}