52

次のように、URLで初期化されたAVPlayerオブジェクトからURLにアクセスする方法はありますか?

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

4 に答える 4

94

AVPlayerを再生しますAVPlayerItemAVPlayerItemsは、クラスのオブジェクトによってサポートされますAVAssetplayerWithURL:このメソッドを使用すると、 namedのサブクラスであるアセットに裏打ちされたAVPlayerものが自動的に作成されます。プロパティがあります。AVPlayerItemAVAssetAVURLAssetAVURLAssetURL

そうです、あなたが提供した場合、あなた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
}
于 2012-12-26T05:08:36.820 に答える
15

Oneliner swift 4.1

let url: URL? = (player?.currentItem?.asset as? AVURLAsset)?.url
于 2018-05-19T19:41:07.673 に答える
13

Swift3のソリューション

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
}
于 2016-12-14T00:18:24.897 に答える
4

@eonist回答に基づくAVPlayerItem拡張。

拡張AVPlayerItem{
    var url:URL?{{
        return(asset as?AVURLAsset)?. url
    }
}
于 2020-10-07T10:16:24.387 に答える