]> git.parisson.com Git - telecaster-server.git/commitdiff
fix multiple video sources
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Mon, 9 Jun 2025 08:08:43 +0000 (10:08 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Mon, 9 Jun 2025 08:08:43 +0000 (10:08 +0200)
bin/streaming/telecaster.py
etc/telecaster/telecaster.yml

index d34f85f9e0b432a89c13bd0bc062a7f94a80b1b8..9047a3f852a5ef6994c5b5601e2f54e0ed484547 100755 (executable)
@@ -127,9 +127,7 @@ class TeleCaster(Thread):
         self.deefuzzer_video_conf_file = "/tmp/telecaster_deefuzzer_webm_monitor.yml"
         self.deefuzzer_audio_conf_file = "/tmp/telecaster_deefuzzer_mp3_monitor.yml"
         # print(self.conf)
-
         audio_engine = self.conf["audio"]["engine"]
-
         self.params = PARAMS[audio_engine]
         self.params["options"] = self.params["options"].format(**self.conf["audio"][audio_engine])
         self.params["gst_audio_options"] = self.params["gst_audio_options"].format(**self.conf["audio"][audio_engine])
@@ -137,7 +135,6 @@ class TeleCaster(Thread):
         if self.verbose:
             print(self.params)
 
-
     def write_conf(self, conf_dict, path):
         filename, ext = os.path.splitext(path)
         f = open(path, 'w')
@@ -180,30 +177,34 @@ class TeleCaster(Thread):
             deefuzzer.start()
 
     def video_start(self):
+        num_cam = len(self.conf["video"]["gstreamer"])
+
         deefuzzer_default_conf = deepcopy(self.conf["video"]["deefuzzer"])
         deefuzzer_station_conf = deepcopy(deefuzzer_default_conf["station"])
-
         deefuzzer_global_conf = {"deefuzzer": deepcopy(deefuzzer_default_conf)}
         deefuzzer_global_conf["deefuzzer"]["station"] = []
 
-        num_cam = len(self.conf["video"]["gstreamer"])
-
         for video in self.conf["video"]["gstreamer"]:
+            local_params = deepcopy(self.params)
+
             if "v4l2-ctl" in video:
                 self.v4l2_ctl(video)
 
-            self.params["gst_video_options"] = self.params["gst_video_options"].format(**video)
+            local_params["gst_video_options"] = local_params["gst_video_options"].format(**video)
 
             pipeline = VIDEO_PIPELINE_BASE.format(**video,
                 **self.conf["audio"]["gstreamer"],
                 **self.conf["server"],
-                **self.params,
+                **local_params,
                 )
+
             stream = TeleCasterGStream(pipeline)
+
             if self.verbose:
                 print(pipeline)
             if not self.dry_run:
                 stream.start()
+
             time.sleep(BOOT_TIME_DELAY)
 
             deefuzzer_local_conf = deepcopy(deefuzzer_station_conf)
@@ -240,10 +241,12 @@ class TeleCaster(Thread):
                 **self.params,
                 )
         stream = TeleCasterGStream(pipeline)
+
         if self.verbose:
             print(pipeline)
         if not self.dry_run:
             stream.start()
+
         time.sleep(BOOT_TIME_DELAY)
 
         deefuzzer_local_conf = deepcopy(deefuzzer_station_conf)
index 2f2b045c3dac980c4bf3db9817f20b2c366645e2..950435beaec54591f6a54c9aac4e0ac54f05f221 100644 (file)
@@ -25,6 +25,24 @@ telecaster:
           focus_automatic_continuous: 0
           sharpness: 128
           saturation: 100
+      - id: 2
+        name: logitech
+        width: 1280
+        height: 720
+        framerate: 30
+        flip: none
+        format: image/jpeg
+        decoder: jpegdec
+        audio_delay: 0
+        video_delay: 0
+        vp8_bitrate: 4000000
+        v4l2-ctl:
+          power_line_frequency: 1
+          zoom_absolute: 100
+          focus_absolute: 0
+          focus_automatic_continuous: 0
+          sharpness: 128
+          saturation: 100
     deefuzzer:
         log: /var/log/telecaster/telecaster_webm_monitor.log
         m3u: /tmp/telecaster_webm_monitor.m3u