gstreamer videomixer2 cpu使用率为164%。有没有减量的办法

2024-09-29 22:00:35 发布

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

作为我项目的一部分,我将不得不同步2个视频。因为我用python实现它,所以我开始使用gstreamer。在

我的管道看起来像这样

filesrc->;解码器->;queuev->;videobox

filesrc-1->;解码器->;queuev1->;videobox1

这两个视频盒都是这样连接到混音器的

[videobox 1和2]->;混音器->;ffmpegcolorspace->;videosink

所有这些都在一条管道中。在

但这里的问题是,当我运行代码时,我得到174%的cpu使用率,我认为这不是真正的优化。有什么办法可以减少这个吗?因为即使我只是在并行管道中运行3个视频,我也能得到14%的cpu使用率。在

我也在这里上传我的部分代码。在

self.pipeline = gst.Pipeline('pipleline')
self.filesrc = gst.element_factory_make("filesrc", "filesrc")

self.filesrc.set_property('location', videoloc1)
self.pipeline.add(self.filesrc)

self.decode = gst.element_factory_make("decodebin2", "decode")
self.pipeline.add(self.decode)

self.queuev = gst.element_factory_make("queue", "queuev")
self.pipeline.add(self.queuev)

self.video = gst.element_factory_make("autovideosink", "video")
self.pipeline.add(self.video)

self.filesrc_2 = gst.element_factory_make("filesrc", "filesrc2")
self.filesrc_2.set_property('location', videoloc2) 
self.pipeline.add(self.filesrc_2)

self.decode_2 = gst.element_factory_make("decodebin2", "decode_2")
self.pipeline.add(self.decode_2)

self.queuev_2 = gst.element_factory_make("queue", "queuev_2")
self.pipeline.add(self.queuev_2)

self.mixer = gst.element_factory_make("videomixer2", "mixer")
self.pipeline.add(self.mixer)

self.videobox_1 = gst.element_factory_make("videobox", "videobox_1")
self.pipeline.add(self.videobox_1)

self.videobox_2 = gst.element_factory_make("videobox", "videobox_2")
self.pipeline.add(self.videobox_2)

self.ffmpeg1 = gst.element_factory_make("ffmpegcolorspace", "ffmpeg1")
self.pipeline.add(self.ffmpeg1)

gst.element_link_many(self.filesrc,self.decode)
gst.element_link_many(self.filesrc_2,self.decode_2)  
gst.element_link_many(self.queuev,self.videobox_1,self.mixer,self.ffmpeg1,self.video)                                          
gst.element_link_many(self.queuev_2,self.videobox_2,self.mixer)

Tags: gtselfaddmakepipelinefactoryvideoelement
2条回答

Videomixer使用cpu来混合视频。总之,为了知道,运行一个profiler(oprofile,sysprof)来查看哪些代码使用了最多的cpu。你也没有说任何关于分辨率和色彩空间以及你运行这个的硬件。所以很难说它是出人意料的慢。 最后,您不需要混合视频来同步它们,您只需在单个管道中运行它们。这取决于您的应用程序,例如在窗口中渲染到单独的绘图区域或其他地方。在

相关问题 更多 >

    热门问题