【问题标题】:iPad retina screen recordingiPad视网膜屏幕录制
【发布时间】:2013-08-26 21:09:32
【问题描述】:

两部分:

  1. 如果我错了,请纠正我,但是没有标准的视频文件格式可以容纳 2048 x 1536 帧吗? (即不可能记录 iPad 视网膜的全分辨率?)

  2. 我的应用程序使用 glReadPixels 调用来记录屏幕,并将像素缓冲区附加到 AVAssetWriterInputPixelBufferAdaptor。如果需要调整视频大小以导出,最好的方法是什么?我现在正在尝试使用 AVMutableVideoCompositionLayerInstructions 和 CGAffineTransforms,但它不起作用。有什么想法吗?

谢谢

山姆

【问题讨论】:

    标签: ios ipad opengl-es-2.0 retina-display video-recording


    【解决方案1】:
    1. 是的,这是可能的。我的应用也在拍摄大帧视频。

    2. 不要使用 glReadpixels,它会导致很多延迟,尤其是在将大帧录制为 2048 x 1536 时

    从 iOS 5.0 开始,您可以使用更快的方式使用纹理现金 (link)

    【讨论】:

    • 什么视频格式?有没有办法在屏幕录制中使用纹理缓存:这是我正在录制的屏幕上的内容,而不是相机源。
    • .MOV 是的,您可以记录 OpenGL 缓冲区,它只是将屏幕渲染到支持纹理缓存。在我的情况下,来自凸轮的纹理 -> 阴影 -> 渲染 -> 录制所以只需保持纹理
    • 你能从渲染缓冲区获取纹理引用吗?
    • 不,那是不可能的。我可以从纹理 cash 中获得纹理参考。这是一个基本逻辑,在你使用 IOS API 制作纹理现金后,你可以将你的渲染缓冲区渲染到苹果支持的临时纹理缓冲区(后备缓冲区)。然后您可以使用此现金参考录制视频。
    • 我不确定,但是当我尝试使用 GL_RENDERBUFFER 时出现错误。无论如何,无论如何,该方法都会在 CVImageBuffer 和底层 CVOpenGLESTexture 纹理对象之间创建一个实时绑定,因此即使您将其设置为 GL_RENDERBUFFER 这并不意味着您拥有来自渲染缓冲区缓冲区的纹理引用。试试看很简单
    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多