我想从我的应用程序(使用OpenGL)得到我的观点被写入到文件中。 这是我得到的OpenGL框架:ffmpeg的视频输出去饱和
glBindTexture(GL_TEXTURE_2D, renderTexture->getTextureData()->glId);
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
这工作得很好,并有正确的颜色。 (我通过将像素渲染为单个图像文件来检查这一点)。
现在,因为我想这在我使用的ffmpeg的编码的视频。这是我的命令:
ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i - -vf vflip -vcodec mpeg1video -q:v 4 -bufsize 500KB -maxrate 5000KB
这也是“有效”,但我的视频与OpenGL的实际输入相比非常不饱和。我该如何解决这个问题? (如果可能的话,我可以通过只在命令改变的事情做到这一点?)
您应该使用glReadPixels而不是通过glGetTexImage。原因有二:如果你想获得主窗口的内容,glGetTexImage不被OpenGL-ES支持,而且glReadPixels甚至不需要经过FBO就可以工作。 – datenwolf 2015-04-01 10:05:51
@datenwolf感谢您的信息。我会尝试,但我不怀疑这会改变从ffmpeg – Dries 2015-04-01 10:08:22
的输出确实它不能解决你的问题,因此这是一个评论。 – datenwolf 2015-04-01 10:08:54