From: Guillaume Pellerin Date: Mon, 9 Jun 2025 08:08:43 +0000 (+0200) Subject: fix multiple video sources X-Git-Tag: 4.2.0~1 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8de536ff604101ba1398c24c4107312bd177797d;p=telecaster-server.git fix multiple video sources --- diff --git a/bin/streaming/telecaster.py b/bin/streaming/telecaster.py index d34f85f..9047a3f 100755 --- a/bin/streaming/telecaster.py +++ b/bin/streaming/telecaster.py @@ -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) diff --git a/etc/telecaster/telecaster.yml b/etc/telecaster/telecaster.yml index 2f2b045..950435b 100644 --- a/etc/telecaster/telecaster.yml +++ b/etc/telecaster/telecaster.yml @@ -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