GStreamer:textoverlay在播放期间不会动态更新

2024-09-28 05:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想看看视频图像上当前的CPU负载(源代码是/dev/video0),我认为textoverlay元素非常适合于此。 我构建了一个(似乎)工作的管道,除了textoverlay继续显示最初设置给它的值。在

管道目前是这样的:

v4l2src > qtdemux > queue > ffmpegcolorspace > textoverlay > xvimagesink

代码是这样的(我去掉了一堆gtk窗口、线程处理代码和一些其他信号处理,只剩下了相关部分):

^{pr2}$

cpu_load_calculator在后台继续运行,在我设置新值之前,我使用get_property()函数打印出前面的值,并且设置正确。但是在实际的视频输出窗口中,它会保持初始值。。 如何使textoverlay也能正确地更新到视频窗口?在


Tags: 代码dev图像元素视频管道源代码queue
1条回答
网友
1楼 · 发布于 2024-09-28 05:24:50

问题是您试图从不同的进程更新textoverlay。与线程不同的进程运行在不同的地址空间中。在

您可以切换到线程:

from threading import Thread
...
# CPU stats calculator thread    
cpu_load_thread = Thread(target=self.cpu_load_calculator, args=())
cpu_load_thread.start()

或者可以从主线程运行cpu_load_calculator循环。这是因为self.pipeline.set_state(gst.STATE_PLAYING)在后台启动它自己的线程。在

这样就足够了:

^{pr2}$

相关问题 更多 >

    热门问题