在我的项目中,我正在使用AVSampleBufferDisplayLayer和AVPlayerLayer。他们的机器人有类似的界面和videoGravity属性。 当我更改AVPlayerLayer videoGravity属性视频时立即重新调整大小与动画效果。使用AVSampleBufferDisplayLayer videoGravity,直到我更改设备方向,然后重新调整视频大小而没有动画时,没有任何事情发生。
如何将AVSampleBufferDisplayLayer的videoGravity更改为与AVPlayerLayer类似?
答案 0 :(得分:0)
我发现的唯一解决方案是重新初始化 AVSampleBufferDisplayLayer,例如:
var displayBufferLayer: AVSampleBufferDisplayLayer?
...
func reinitBufferLayer(videoGravity: AVLayerVideoGravity) {
displayBufferLayer?.flush()
displayBufferLayer?.stopRequestingMediaData()
displayBufferLayer?.removeFromSuperlayer()
let bufferLayer = AVSampleBufferDisplayLayer()
bufferLayer.frame = view.bounds
bufferLayer.videoGravity = videoGravity // (i.e. .resizeAspectFill)
bufferLayer.isOpaque = true
view.layer.insertSublayer(bufferLayer, at: 0)
self.displayBufferLayer = bufferLayer
}