|
|
@@ -2,7 +2,8 @@
|
|
|
import sys
|
|
|
import gi
|
|
|
gi.require_version('Gst', '1.0')
|
|
|
-from gi.repository import Gst
|
|
|
+gi.require_version('GstNet', '1.0')
|
|
|
+from gi.repository import Gst, GstNet
|
|
|
import time
|
|
|
import threading
|
|
|
import os
|
|
|
@@ -11,9 +12,18 @@ import stat
|
|
|
WIDTH = 1280
|
|
|
HEIGHT = 720
|
|
|
|
|
|
+WIDTH = 1024
|
|
|
+HEIGHT = 576
|
|
|
+
|
|
|
SCREEN_WIDTH = 800
|
|
|
SCREEN_HEIGHT = 600
|
|
|
|
|
|
+SCREEN_WIDTH = 1280
|
|
|
+SCREEN_HEIGHT = 720
|
|
|
+
|
|
|
+SCREEN_WIDTH = 1920
|
|
|
+SCREEN_HEIGHT = 1080
|
|
|
+
|
|
|
def bus_call(bus, msg, *args):
|
|
|
if msg.type == Gst.MessageType.EOS:
|
|
|
print("End-of-stream")
|
|
|
@@ -94,19 +104,30 @@ if __name__ == "__main__":
|
|
|
Gst.init(None)
|
|
|
|
|
|
videocodec = "video/x-h264, width=%d, height=%d, framerate=25/1, profile=high ! h264parse" % (WIDTH, HEIGHT)
|
|
|
- p = "rpicamsrc sensor-mode=4 do-timestamp=true name=src ! "+videocodec+" ! matroskamux ! tcpserversink host=0.0.0.0 port=5000 sync-method=burst-keyframe"
|
|
|
+ p = "rpicamsrc sensor-mode=4 bitrate=0 quantisation-parameter=12 do-timestamp=true keyframe-interval=5 name=src ! "+videocodec+" ! matroskamux streamable=true ! tcpserversink host=0.0.0.0 port=5000 sync-method=next-keyframe blocksize=16384"
|
|
|
print(p)
|
|
|
+ #
|
|
|
pipeline = Gst.parse_launch (p)
|
|
|
if pipeline == None:
|
|
|
print ("Failed to create pipeline")
|
|
|
sys.exit(0)
|
|
|
|
|
|
+ clock = GstNet.NetClientClock.new('CamVoctoClock', '192.168.2.123', 9998, 0)
|
|
|
+ #print("Waiting for clock sync")
|
|
|
+ #clock.wait_for_sync(Gst.CLOCK_TIME_NONE)
|
|
|
+ #clock.do_wait(Gst.CLOCK_TIME_NONE)
|
|
|
+ #print("Clock synced")
|
|
|
+ pipeline.set_start_time(Gst.CLOCK_TIME_NONE)
|
|
|
+ if clock is not None:
|
|
|
+ pass
|
|
|
+ #pipeline.use_clock(clock)
|
|
|
+
|
|
|
videosrc = pipeline.get_by_name ("src")
|
|
|
videosrc.set_property("preview", 1)
|
|
|
- videosrc.set_property("preview-w", WIDTH)
|
|
|
- videosrc.set_property("preview-h", HEIGHT)
|
|
|
+ videosrc.set_property("preview-w", SCREEN_WIDTH)
|
|
|
+ videosrc.set_property("preview-h", SCREEN_HEIGHT)
|
|
|
videosrc.set_property("fullscreen", False)
|
|
|
- videosrc.set_property("bitrate", 16000000)
|
|
|
+ #videosrc.set_property("bitrate", 14000000)
|
|
|
# videosrc.set_property("bitrate", 25000000)
|
|
|
videosrc.set_property("rotation", 180)
|
|
|
set_preview(0)
|