繁体   English   中英

ffmpeg视频输出已饱和

[英]ffmpeg video output is desaturated

我正在尝试从我的应用程序(使用OpenGL)获取视图,以将其写入文件。 这就是我得到OpenGL框架的方法:

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获得的实际输入相比,我的视频变得非常不饱和。 我该如何解决? (如果可能,是否可以仅通过更改命令中的内容来做到这一点?)

ffmpeg读取像素的方式很可能与您从OpenGL中获得的布局不匹配。 使用带有GL_PACK_…参数的glPixelStorei来固定OpenGL发出的布局。

另一个问题可能是色彩空间。 您必须确保ffmpeg在与OpenGL上下文相同的色彩空间中运行。 如果不是,则必须确定颜色空间,然后将转换滤镜添加到ffmpeg的处理链中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM