GstBus not getting EOS Event
Ravi Modha
ravi.modha at tudip.com
Thu Oct 24 11:50:00 UTC 2019
I am new to GStreamer and I have created a small example where I am
recording the webcam and used app sink to get the sample but when I try to
stop the pipeline by setting its state to null and sending EOS event, my
bus callback function never gets called for the EOS. And because of this
memory leaks
Guys, Please help me
import gi import time import threading
gi.require_version('Gst', '1.0') gi.require_version('Gtk', '3.0')
gi.require_version('GstApp', '1.0')
from gi.repository import GObject, Gst, Gtk, GstApp import signal
Gst.init(None)
class Main:
shutdown = False
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.OKdef
_on_eos_from_sink_pipeline(self, _bus, _message): print("Got EOS
from sink pipeline") exit()def eos(self, sink): print("SINK
EOS") return Truedef 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")
start = Main()
Gtk.main()`
--
*Thanks & Regards*,
*Ravi Modha*
*ravi.modha at tudip.com <ravi.modha at tudip.com> | **Skype: **ravi.modha at tudip.com
<ravi.modha at tudip.com>*
<https://tudip.com/>
<https://in.linkedin.com/company/tudip-technologies-pvt-ltd->
<https://clutch.co/profile/tudip-technologies>
<https://www.goodfirms.co/companies/view/4439/tudip-technologies-pvt-ltd>
<https://www.facebook.com/TudipTechnologies>
<https://twitter.com/TudipTech>
<https://www.youtube.com/channel/UCoNPz2mbzNF_AZhLQEzuWCg>
www.tudip.com <https://tudip.com/> | Tudip in News
<https://tudip.com/tudip-technologies-in-news/>
+91 20 4674 0881 <callto:+91%2020%204674%200881> | +1 408 216 8162
<callto:+1%20408%20216%208162>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191024/d7ca27f8/attachment-0001.html>
More information about the gstreamer-devel
mailing list