ios - AVSampleBufferDisplayLayer : change videoGra

在我的项目中,我使用了 AVSampleBufferDisplayLayer 和 AVPlayerLayer。它们的 Bot 具有相似的界面和 videoGravity 属性。 当我更改 AVPlayerLayer videoGravity 属性时,视频会立即通过动画效果重新调整大小。使用 AVSampleBufferDisplayLayer videoGravity 在我改变设备方向之前没有任何反应,然后视频在没有动画的情况下重新调整大小。

如何将 AVSampleBufferDisplayLayer 的 videoGravity 更改为类似于 AVPlayerLayer 的行为?

最佳答案

我找到的唯一解决方案是重新初始化 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
}

关于ios - AVSampleBufferDisplayLayer : change videoGravity animated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439729/

相关文章:

jakarta-ee - Mybatis:log4j:WARN 找不到记录器的附加程序 (org.a

python - flask 迁移 : Alembic converting choices int

xaml - 在 UWP 应用程序中覆盖来自 Generic.xaml 的资源

pdf - 有没有一种方法可以自动化/编写脚本(例如 perl)标记的 pdf 文件以查看它是否符合

python - 使用来自用户的 url 的服务器端 urllib2.urlopen 的安全注意事项

java - Java 中字符串的反序列化

python - 如何在 PLY 中做一个 IF 语句?

c# - 运行已编译的 C# 程序 (.exe) 的要求

python - 在 OpenGL 中的 3D 模型后面绘制背景视频

jsp - 带有 Tomcat 的 Intellij IDEA HotSwap 适用于类,但不适用于