Accessing URL from AVPlayer object?
avplayer, ios
Solution
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
}
Problem
Is there a way to access the URL from an AVPlayer object that has been initialized with a URL, as in: ``` NSURL *url = [NSURL URLWithString: @"http://www.example.org/audio"]; self.player = [AVPlayer playerWithURL: url]; ```