c++ - Opengl sws_scale 不工作(段错误)

标签 c++ opengl ffmpeg rendering video-capture

我正在开发一个 OpenGL 视频应用程序,我想在其中以全屏模式渲染视频。我正在尝试使用以下代码渲染视频:

GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
glfwWindowHint(GLFW_RED_BITS, mode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);

但是,当我尝试缩放视频帧时,它会产生段错误。
我正在使用 ffmpegsws颜色转换的刻度。
sws_scaler_ctx = sws_getContext(width, height, av_codec_ctx->pix_fmt,
                                width, height, AV_PIX_FMT_RGB0,
                                SWS_FAST_BILINEAR, NULL, NULL, NULL);

uint8_t* dest[4] = { frame_buffer, NULL, NULL, NULL };
int dest_linesize[4] = { width*4, 0, 0, 0 };
sws_scale(sws_scaler_ctx, av_frame->data, av_frame->linesize, 0, av_frame->height, dest, dest_linesize);

有谁知道为什么在尝试缩放视频帧时会导致段错误?

最佳答案

 sws_scale(data->conv_ctx, data->av_frame->data, data->av_frame->linesize, 0,
                          data->codec_ctx->height, data->gl_frame->data, data->gl_frame->linesize);

它正在缩放 Windows 监视器并解决我的问题。

关于c++ - Opengl sws_scale 不工作(段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61074327/

相关文章:

linux - 如何加入网络摄像头 FLV

c++ - 为模板元编程打印静态变量

c++ - 用递归计算数字的位数

c++ - move 构造函数相对于采用 bool 表示是复制还是 move 的复制构造函数有什么优势?

c++ - 行列式中的段错误(核心已转储)

delphi - 如何在Windows上的Delphi中加载OpenGL glGenBuffers方法?

OpenGL:如何正确解除绑定(bind)和删除缓冲区

flash - 使用 FFMPEG 将 SWF 文件转换为 FLV 并出现错误 "could not find codec parameters"

ffmpeg - 将两个 ffmpeg 命令组合成一个命令

ios - Swift:无法使用类型为 'init' 的参数列表调用 '($t3, NSString)'