如何解决使用AVPlayer,AVPlayerItem和AVPlayerAsset有什么区别吗?
我发现了使用URL播放视频的三种方法。
let url = "some url"
// first way
AVPlayer(url: url)
// second way
let playerItem = AVPlayerItem(url: url)
AVPlayer(playerItem: playerItem)
// third way
let asset = AVAsset(url: url)
let playerItem = AVPlayerItem(asset: asset)
AVPlayer(playerItem: playerItem)
以上两者之间有区别吗?
解决方法
此方法隐式创建一个
AVPlayerItem
对象。您可以使用currentItem
获取播放器项目。
因此我们知道,当您使用第一种方式时,与第二种方式相似的事情正在发生-将会使用您指定的URL创建一个AVPlayerItem
。因此,第一和第二种方法是相同的。
尽管文档没有明确说明,但我很确定AVPlayerItem.init(url:)
也会使用您指定的URL创建AVAsset
,因为AVPlayerItem
是:
用于模拟玩家播放的 资产 的时间和呈现状态的对象。
该措辞表明,没有AVPlayerItem
,就不会有AVAsset
。实际上,AVPlayerItem.asset
是一个非可选属性。因此,您确实需要AVAsset
来创建AVPlayerItem
。结合AVPlayerItem.init(url:)
是便捷初始化程序和init(asset:automaticallyLoadedAssetKeys:)
被指定为事实的事实,我很确定AVPlayerItem.init(url:)
也会在后台创建一个AVAsset
。
如果您想知道当三种方式都执行相同操作时为什么AVPlayer.init(playerItem:)
和AVPlayerItem.init(asset:)
存在,那是因为当您恰好在您使用AVPlayerItem
时想创建一个AVPlayer
,而当您恰好要创建一个AVAsset
时正在使用AVPlayerItem
时。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。