我正在使用v1.8.1在C ++中开发一个非常简单的Gstreamer应用程序。我正在使用appsrc从相机中获取图像并将它们放入流中。相机读取和流插入工作非常好,但我试图将一些统计数据叠加到图像上。
在我获取和发布缓冲区后,在appsrc的“需要数据”回调中,我只是构建字符串,并将其传递给Textoverlay对象(在main中设置的全局变量)。即:
sprintf_s(title, "Acq [ captured: %lu, skipped: %lu, fps: %.2f ]", frames, lostframes, 1000000.0 * (frames - prevframes) / (curtime - prevtime));
g_object_set(txtoverlay, "text", title, NULL);
它很棒......第一次。再也不。我每隔一秒就限制文本更新,我甚至每隔10秒就尝试一次。
关于为什么文本叠加的字符串更新在第一次迭代之后没有工作的任何想法?
答案 0 :(得分:1)
这证明了appsrc缓冲区没有更新的问题。缓冲区的时间戳无效,一旦更正,文本更新工作正常。