Подтвердить что ты не робот

Доступ к URL-адресу из объекта AVPlayer?

Есть ли способ получить доступ к URL-адресу из объекта AVPlayer, который был инициализирован URL-адресом, например:

NSURL *url = [NSURL URLWithString: @"http://www.example.org/audio"];
self.player = [AVPlayer playerWithURL: url];
4b9b3361

Ответ 1

An AVPlayer играет a AVPlayerItem. AVPlayerItem поддерживаются объектами класса AVAsset. Когда вы используете метод playerWithURL: AVPlayer, он автоматически создает AVPlayerItem, поддерживаемый активом, который является подклассом AVAsset с именем AVURLAsset. AVURLAsset имеет свойство URL.

Итак, да, в данном случае вы можете легко получить NSURL текущего воспроизводимого элемента. Вот пример функции, как это сделать:

-(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];
}

Не быстрый специалист, но, похоже, это можно сделать быстрее.

func urlOfCurrentlyPlayingInPlayer(player : AVPlayer) -> URL? {
    return ((player.currentItem?.asset) as? AVURLAsset)?.url
}

Ответ 2

Решение для 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
}

Ответ 3

Oneliner swift 4.1 🔸

let url: URL? = (player?.currentItem?.asset as? AVURLAsset)?.url