Added zerocopy, improved stream robustness and reduced latency
This commit is contained in:
36
stream-gst.py
Normal file
36
stream-gst.py
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import gi
|
||||
gi.require_version('Gst', '1.0')
|
||||
from gi.repository import Gst, GLib
|
||||
from datetime import datetime
|
||||
|
||||
Gst.init(None)
|
||||
|
||||
device = sys.argv[1] if len(sys.argv) > 1 else "/dev/video0"
|
||||
port = sys.argv[2] if len(sys.argv) > 2 else "5000"
|
||||
|
||||
pipeline = Gst.parse_launch(f"""
|
||||
v4l2src device={device} io-mode=2 !
|
||||
videoconvert !
|
||||
textoverlay name=overlay halignment=left valignment=top font-desc="Monospace 36" !
|
||||
x265enc tune=zerolatency speed-preset=ultrafast option-string="bframes=0:keyint=30:scenecut=0" !
|
||||
h265parse config-interval=1 !
|
||||
rtph265pay config-interval=1 mtu=1400 !
|
||||
udpsink host=127.0.0.1 port={port} sync=false async=false
|
||||
""")
|
||||
|
||||
overlay = pipeline.get_by_name("overlay")
|
||||
|
||||
def update_text():
|
||||
overlay.set_property("text", datetime.now().strftime("%H:%M:%S.%f")[:-3])
|
||||
return True
|
||||
|
||||
GLib.timeout_add(5, update_text)
|
||||
|
||||
pipeline.set_state(Gst.State.PLAYING)
|
||||
loop = GLib.MainLoop()
|
||||
try:
|
||||
loop.run()
|
||||
except KeyboardInterrupt:
|
||||
pipeline.set_state(Gst.State.NULL)
|
||||
Reference in New Issue
Block a user