Added zerocopy, improved stream robustness and reduced latency

This commit is contained in:
RedNicStone
2026-08-26 11:41:54 +01:00
parent 97ff779911
commit 436808a0d0
22 changed files with 1605 additions and 250 deletions

36
stream-gst.py Normal file
View 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)