我想看看视频图像上当前的CPU负载(源代码是/dev/video0
),我认为textoverlay
元素非常适合于此。
我构建了一个(似乎)工作的管道,除了textoverlay
继续显示最初设置给它的值。在
管道目前是这样的:
v4l2src > qtdemux > queue > ffmpegcolorspace > textoverlay > xvimagesink
代码是这样的(我去掉了一堆gtk窗口、线程处理代码和一些其他信号处理,只剩下了相关部分):
^{pr2}$cpu_load_calculator
在后台继续运行,在我设置新值之前,我使用get_property()
函数打印出前面的值,并且设置正确。但是在实际的视频输出窗口中,它会保持初始值。。
如何使textoverlay也能正确地更新到视频窗口?在
问题是您试图从不同的进程更新textoverlay。与线程不同的进程运行在不同的地址空间中。在
您可以切换到线程:
或者可以从主线程运行
cpu_load_calculator
循环。这是因为self.pipeline.set_state(gst.STATE_PLAYING)
在后台启动它自己的线程。在这样就足够了:
^{pr2}$相关问题 更多 >
编程相关推荐