在滚动我的应用Feed时,我会在AVPlayer中加载一些视频。问题是AVPlayerItem playerItemWithUrl
和AVPlayer playerWithPlayerItem
有点慢(大约16毫秒),因此它会在我的应用中产生帧丢失。他们以任何方式加快速度吗?也许我可以在后台线程中调用这些函数?
在我用来创建播放器的代码下面:
FPlayerItem := TAVPlayerItem.Wrap(TAVPlayerItem.OCClass.playerItemWithURL(aURL));
FPlayer := TAVPlayer.Wrap(TAVPlayer.OCClass.playerWithPlayerItem(FPlayerItem));
答案 0 :(得分:0)
在AVAsynchronousKeyValueLoading内播放该项目 它明确指出:
您可以实施无需使用资产或资产跟踪的方法 阻止调用线程。
逻辑上,理解:
let asset = AVAsset(url: url)
let keys: [String] = ["playable"]
asset.loadValuesAsynchronously(forKeys: keys) {
DispatchQueue.main.async {
let item = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: item)
player.play()
}
}
This answer可以帮助您更好地理解它。