【问题标题】:GstBus not getting EOS EventGstBus 没有收到 EOS 事件
【发布时间】:2019-10-22 11:19:08
【问题描述】:

我是 GStreamer 的新手,我创建了一个小示例,我正在录制网络摄像头并使用 appsink 获取示例,但是当我尝试通过将其状态设置为 null 并发送 EOS 事件来停止管道时,我的总线回调永远不会为 EOS 调用函数。

各位,帮帮我

类主要: 关机=假

def __init__(self):
    signal.signal(signal.SIGINT, self.keyboardInterruptHandler)

    self._pipeline = Gst.parse_launch("avfvideosrc name=avfvideosrc ! x264enc name=x264enc ! appsink name=appsink max-buffers=1 drop=false sync=false emit-signals=true wait-on-eos=false")
    bus = self._pipeline.get_bus()
    bus.add_signal_watch()
    bus.connect("message::eos", self._on_eos_from_sink_pipeline)
    bus.connect("message", self.on_status_changed)
    appsink = self._pipeline.get_by_name('appsink')
    appsink.connect('new-sample', self.on_new_sample)
    appsink.connect('eos', self.eos)

    #bus.connect('message', self.on_status_changed)
    self._pipeline.set_state(Gst.State.PLAYING)

def on_new_sample(self, appsink):
    return Gst.FlowReturn.OK

def _on_eos_from_sink_pipeline(self, _bus, _message):
    print("Got EOS from sink pipeline")
    exit()

def eos(self, sink):
    print("SINK EOS")
    return True

def on_status_changed(self, bus, message):
    print('Status: ', message.type)
    print('Object: ', message.src)
    print('Parsed Message: ', message.parse_state_changed())

def keyboardInterruptHandler(self,signal, frame):
    print("KeyboardInterrupt (ID: {}) has been caught. Cleaning up...".format(signal))
    self.shutdown = True
    self.stopFetching()

def stopFetching(self):
    print("AT THE START OF STOP FETCHING")       
    self._pipeline.set_state(Gst.State.NULL)
    self._pipeline.send_event(Gst.Event.new_eos())
    print("AT THE END OF STOP FETCHING")

开始 = Main() gtk.main()

【问题讨论】:

    标签: python gstreamer


    【解决方案1】:

    您需要发送 EOS 并等待它到达您的处理程序。一旦发生这种情况,您可以将管道设置为 NULL 以完全关闭管道。

    在您当前的代码中,当您将其设置为 NULL 然后发送事件时,管道已经关闭(设置为 NULL 是同步发生的)并且不会发送事件。

    【讨论】:

    • 首先感谢您的回复。我已经尝试过先发送 EOS,但在这种情况下,我也从未在总线回叫时收到 EOS 消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2021-01-05
    • 2013-11-25
    相关资源
    最近更新 更多