我正在开发一个 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);
但是,当我尝试缩放视频帧时,它会产生段错误。
我正在使用
ffmpeg
和 sws
颜色转换的刻度。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/