gpt4 book ai didi

c++ - FFMPEG 和 OPENGL - 原始帧

转载 作者:行者123 更新时间:2023-12-04 23:16:41 24 4
gpt4 key购买 nike

我正在使用 BlackMagic DeckLink Card 构建录音机。
该程序使用 OpenGL 显示帧和 FFMPEG(使用 glReadPixels() 方法)来记录它们。
我在我的程序中设置视口(viewport)以应用自动信箱/邮筒,无论图像/监视器是 16:9/4:3。
这个问题的问题是,当我捕获此视口(viewport)的这些帧时,它们当然会以我的视口(viewport)的分辨率记录(即全高清源 -> 视口(viewport),由于监视器具有 1600x1200 分辨率 -> 信箱降至 1600x900)等等 FFMPEG 记录那些顶部/底部带有黑条的 1600x1200。

在通过 setViewport 函数和所有重新缩放的东西传递之前,是否有可能捕获 RAW 帧?

最佳答案

好吧,在某些时候,图像被传递给 OpenGL。为什么不直接将这些数据传递给 FFMPEG,而不是通过 OpenGL 进行冗长、低效和昂贵的往返。

如果 OpenGL 用于实时色彩空间转换,我建议您将渲染到带有与视频分辨率大小相关的纹理的 FBO,在该 FBO 上使用 glReadPixels(最好是 PBO);最后以该窗口分辨率将渲染到纹理的内容绘制到主屏幕上。

但是,如果您可以简单地将原始帧直接提供给 FFMPEG(它也可以进行色彩空间转换),我强烈建议您这样做。

关于c++ - FFMPEG 和 OPENGL - 原始帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com