次のように、URLで初期化されたAVPlayerオブジェクトからURLにアクセスする方法はありますか?
NSURL *url = [NSURL URLWithString: @"http://www.example.org/audio"];
self.player = [AVPlayer playerWithURL: url];
AVPlayer
を再生しますAVPlayerItem
。AVPlayerItem
sは、クラスのオブジェクトによってサポートされますAVAsset
。playerWithURL:
このメソッドを使用すると、 namedのサブクラスであるアセットに裏打ちされた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
}
let url: URL? = (player?.currentItem?.asset as? AVURLAsset)?.url
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
}
@eonist回答に基づくAVPlayerItem拡張。
拡張AVPlayerItem{ var url:URL?{{ return(asset as?AVURLAsset)?. url } }