From afba38497b50e37e2ccf281b8cb6d0b6f4365a88 Mon Sep 17 00:00:00 2001 From: xiaji Date: Fri, 27 Mar 2026 17:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20push=5Fscreen.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- push_screen.py | 64 ++++++++------------------------------------------ 1 file changed, 10 insertions(+), 54 deletions(-) diff --git a/push_screen.py b/push_screen.py index b06f3b0..b11bfc4 100644 --- a/push_screen.py +++ b/push_screen.py @@ -26,7 +26,6 @@ def load_config(): return json.load(f) return { "server_ip": "192.168.1.100", - "mediamtx_path": r"D:\ScreenCast\mediamtx\mediamtx.exe", "ffmpeg_path": r"D:\ScreenCast\ffmpeg\bin\ffmpeg.exe", "stream_path": "screen" } @@ -41,28 +40,22 @@ class ConfigDialog(QDialog): super().__init__(parent) self.config = config self.setWindowTitle("设置") - self.setFixedSize(450, 220) + self.setFixedSize(450, 180) layout = QFormLayout(self) self.server_ip_edit = QLineEdit(config["server_ip"]) - self.mediamtx_path_edit = QLineEdit(config["mediamtx_path"]) self.ffmpeg_path_edit = QLineEdit(config["ffmpeg_path"]) self.stream_path_edit = QLineEdit(config["stream_path"]) - self.mediamtx_btn = QPushButton("浏览...") - self.mediamtx_btn.clicked.connect(lambda: self.browse("mediamtx")) self.ffmpeg_btn = QPushButton("浏览...") self.ffmpeg_btn.clicked.connect(lambda: self.browse("ffmpeg")) path_layout1 = QGridLayout() - path_layout1.addWidget(self.mediamtx_path_edit, 0, 0) - path_layout1.addWidget(self.mediamtx_btn, 0, 1) - path_layout1.addWidget(self.ffmpeg_path_edit, 1, 0) - path_layout1.addWidget(self.ffmpeg_btn, 1, 1) + path_layout1.addWidget(self.ffmpeg_path_edit, 0, 0) + path_layout1.addWidget(self.ffmpeg_btn, 0, 1) layout.addRow("服务器IP:", self.server_ip_edit) - layout.addRow("MediaMTX路径:", self.mediamtx_path_edit) layout.addRow("FFmpeg路径:", self.ffmpeg_path_edit) layout.addRow("推流路径:", self.stream_path_edit) @@ -72,11 +65,7 @@ class ConfigDialog(QDialog): layout.addRow(buttons) def browse(self, field): - if field == "mediamtx": - path = QFileDialog.getOpenFileName(self, "选择MediaMTX", "", "Executable (*.exe)")[0] - if path: - self.mediamtx_path_edit.setText(path) - elif field == "ffmpeg": + if field == "ffmpeg": path = QFileDialog.getOpenFileName(self, "选择FFmpeg", "", "Executable (*.exe)")[0] if path: self.ffmpeg_path_edit.setText(path) @@ -84,7 +73,6 @@ class ConfigDialog(QDialog): def get_config(self): return { "server_ip": self.server_ip_edit.text().strip(), - "mediamtx_path": self.mediamtx_path_edit.text().strip(), "ffmpeg_path": self.ffmpeg_path_edit.text().strip(), "stream_path": self.stream_path_edit.text().strip() } @@ -96,7 +84,6 @@ class ConnectionChecker(QThread): while True: cfg = self.config status = { - "mediamtx": self.check_mediamtx(cfg["mediamtx_path"]), "ffmpeg": self.check_ffmpeg(cfg["ffmpeg_path"]), "server": self.check_server(cfg["server_ip"]), "server_port": self.check_port(cfg["server_ip"], 8554), @@ -107,12 +94,6 @@ class ConnectionChecker(QThread): def set_config(self, config): self.config = config - def check_mediamtx(self, path): - for proc in psutil.process_iter(['name']): - if proc.info['name'] == 'mediamtx.exe': - return True - return False - def check_ffmpeg(self, path): return os.path.exists(path) @@ -167,13 +148,10 @@ class MainWindow(QMainWindow): config_group = QGroupBox("本地配置") config_layout = QGridLayout() - self.mediamtx_label = QLabel("MediaMTX: 未检测") self.ffmpeg_label = QLabel("FFmpeg: 未检测") self.server_label = QLabel("服务器连接: 未检测") self.port_label = QLabel("RTSP端口: 未检测") - self.mediamtx_indicator = QLabel("●") - self.mediamtx_indicator.setFixedWidth(20) self.ffmpeg_indicator = QLabel("●") self.ffmpeg_indicator.setFixedWidth(20) self.server_indicator = QLabel("●") @@ -181,14 +159,12 @@ class MainWindow(QMainWindow): self.port_indicator = QLabel("●") self.port_indicator.setFixedWidth(20) - config_layout.addWidget(self.mediamtx_indicator, 0, 0) - config_layout.addWidget(self.mediamtx_label, 0, 1) - config_layout.addWidget(self.ffmpeg_indicator, 1, 0) - config_layout.addWidget(self.ffmpeg_label, 1, 1) - config_layout.addWidget(self.server_indicator, 2, 0) - config_layout.addWidget(self.server_label, 2, 1) - config_layout.addWidget(self.port_indicator, 3, 0) - config_layout.addWidget(self.port_label, 3, 1) + config_layout.addWidget(self.ffmpeg_indicator, 0, 0) + config_layout.addWidget(self.ffmpeg_label, 0, 1) + config_layout.addWidget(self.server_indicator, 1, 0) + config_layout.addWidget(self.server_label, 1, 1) + config_layout.addWidget(self.port_indicator, 2, 0) + config_layout.addWidget(self.port_label, 2, 1) config_group.setLayout(config_layout) main_layout.addWidget(config_group) @@ -254,13 +230,6 @@ class MainWindow(QMainWindow): self.log_label.setText("日志: 配置已更新") def update_status(self, status): - if status["mediamtx"]: - self.mediamtx_indicator.setStyleSheet("color: green; font-size: 16px;") - self.mediamtx_label.setText("MediaMTX: ✓ 运行中") - else: - self.mediamtx_indicator.setStyleSheet("color: red; font-size: 16px;") - self.mediamtx_label.setText("MediaMTX: ✗ 未运行") - if status["ffmpeg"]: self.ffmpeg_indicator.setStyleSheet("color: green; font-size: 16px;") self.ffmpeg_label.setText("FFmpeg: ✓ 已安装") @@ -282,22 +251,9 @@ class MainWindow(QMainWindow): self.port_indicator.setStyleSheet("color: orange; font-size: 16px;") self.port_label.setText("RTSP端口: ✗ 端口关闭") - def start_mediamtx(self): - cfg = self.config - if not self.checker.check_mediamtx(cfg["mediamtx_path"]): - logger.info("启动MediaMTX服务") - subprocess.Popen([cfg["mediamtx_path"]], cwd=os.path.dirname(cfg["mediamtx_path"]), creationflags=subprocess.CREATE_NEW_CONSOLE) - time.sleep(3) - logger.info("MediaMTX服务已启动") - self.log_label.setText("日志: MediaMTX服务已启动") - else: - logger.info("MediaMTX已在运行") - self.log_label.setText("日志: MediaMTX已在运行") - def push_full_screen(self): cfg = self.config logger.info("开始全屏投屏") - self.start_mediamtx() if not os.path.exists(cfg["ffmpeg_path"]): logger.error("FFmpeg未安装")