Skip to content

Commit 8b7f1f1

Browse files
committed
Adding Frame Rate controller
1 parent 7d0d116 commit 8b7f1f1

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

main_prg.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __init__(self):
2121
self.cam_queue = None
2222
self.stopbit = None
2323
self.camlink = '' #Add your RTSP cam link
24+
self.framerate = 6
2425

2526
def startMain(self):
2627

@@ -33,7 +34,8 @@ def startMain(self):
3334
self.stopbit = mp.Event()
3435
self.camProcess = vs.StreamCapture(self.camlink,
3536
self.stopbit,
36-
self.cam_queue)
37+
self.cam_queue,
38+
self.framerate)
3739
self.camProcess.start()
3840

3941
# calculate FPS

vid_streamv3.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class StreamCommands(Enum):
2828

2929
class StreamCapture(mp.Process):
3030

31-
def __init__(self, link, stop, outQueue):
31+
def __init__(self, link, stop, outQueue, framerate):
3232
"""
3333
Initialize the stream capturing process
3434
link - rstp link of stream
@@ -40,6 +40,7 @@ def __init__(self, link, stop, outQueue):
4040
self.streamLink = link
4141
self.stop = stop
4242
self.outQueue = outQueue
43+
self.framerate = framerate
4344
self.currentState = StreamMode.INIT_STREAM
4445
self.pipeline = None
4546
self.source = None
@@ -80,7 +81,7 @@ def new_buffer(self, sink, _):
8081
def run(self):
8182
# Create the empty pipeline
8283
self.pipeline = Gst.parse_launch(
83-
'rtspsrc name=m_rtspsrc ! rtph264depay name=m_rtph264depay ! avdec_h264 name=m_avdech264 ! videoconvert name=m_videoconvert ! appsink name=m_appsink')
84+
'rtspsrc name=m_rtspsrc ! rtph264depay name=m_rtph264depay ! avdec_h264 name=m_avdech264 ! videoconvert name=m_videoconvert ! videorate name=m_videorate ! appsink name=m_appsink')
8485

8586
# source params
8687
self.source = self.pipeline.get_by_name('m_rtspsrc')
@@ -100,6 +101,11 @@ def run(self):
100101
# convert params
101102
self.convert = self.pipeline.get_by_name('m_videoconvert')
102103

104+
#framerate parameters
105+
self.framerate_ctr = self.pipeline.get_by_name('m_videorate')
106+
self.framerate_ctr.set_property('max-rate', self.framerate/1)
107+
self.framerate_ctr.set_property('drop-only', 'true')
108+
103109
# sink params
104110
self.sink = self.pipeline.get_by_name('m_appsink')
105111

0 commit comments

Comments
 (0)