import subprocess import psutil import os import time import tkinter as tk from tkinter import messagebox # 配置项(仅需改这里的服务器IP) SERVER_IP = "192.168.1.100" # MediaMTX服务器内网IP MEDIAMTX_PATH = r"D:\ScreenCast\mediamtx\mediamtx.exe" FFMPEG_PATH = r"D:\ScreenCast\ffmpeg\bin\ffmpeg.exe" STREAM_PATH = "screen" # 投屏流路径(模式1/2) # 检查MediaMTX是否运行 def check_mediamtx_running(): for proc in psutil.process_iter(['name']): if proc.info['name'] == 'mediamtx.exe': return True return False # 启动MediaMTX(如果未运行) def start_mediamtx(): if not check_mediamtx_running(): subprocess.Popen([MEDIAMTX_PATH], cwd=r"D:\ScreenCast\mediamtx", creationflags=subprocess.CREATE_NEW_CONSOLE) time.sleep(3) # 等待启动 messagebox.showinfo("提示", "MediaMTX已启动!") # 屏幕推流(全屏) def push_full_screen(): start_mediamtx() # 封装FFmpeg命令,低延迟推流 cmd = [ FFMPEG_PATH, "-f", "gdigrab", "-framerate", "30", "-i", "desktop", "-c:v", "libx264", "-preset", "ultrafast", "-tune", "zerolatency", "-f", "rtsp", f"rtsp://{SERVER_IP}:8554/{STREAM_PATH}" ] subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE) messagebox.showinfo("提示", f"全屏投屏已启动!接收端可打开浏览器访问:\n http://{SERVER_IP}:8889/webrtc.html?src=screen ") # 主界面(点击按钮即可) if __name__ == "__main__": root = tk.Tk() root.title("投屏源控制") root.geometry("300x150") btn1 = tk.Button(root, text="一键全屏投屏", command=push_full_screen, width=20, height=2) btn1.pack(pady=20) root.mainloop()