我想從我的應用程序(使用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