通过 gstreamer 和 qt5 可视化 rtsp 流的红色神器

Red artifact on visualizing rtsp stream via gstreamer and qt5

我编写了一个 c++ 程序,它通过 gstreamer 接收 RTSP 流并通过 Qt5 在 QWidget 中显示该视频。作为 gstreamer videosink,我使用 Widgetqt5glvideosink。

问题是当我查看接收到的流时它有太多的红色值。这仅在垂直分辨率超过 +-576 像素时发生。 (较低的分辨率没有问题)
当我使用 cpu 渲染 (Widgetqt5videosink) 而不是 openGL 渲染时,我得到了正确的图像。
当我通过 gstreamer 命令行或 VLC 查看流时,它也是正确的。

所以在使用 openGL 呈现的 QWidget 时它很可能成为一个问题。

这是驱动程序问题还是其他问题?

信息:
在 Ubuntu16.04 和 17.04 上针对查看器应用程序进行了测试。

链接:
https://gstreamer.freedesktop.org/data/doc/gstreamer/head/qt-gstreamer/html/qtvideosink_overview.html

我通过修补 qt-gstreamer 源代码中的两个文件设法解决了我的问题。
比色法BT709有两个错误的颜色矩阵
Patch to fix red artifact in Widgetqt5glvideosink