Skip to content

eisongao/MultiPush

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiPush|多目标直播推流工具

RTSP / 本地摄像头 / 媒体文件 → 多平台 RTMP/RTMPS(tee)推流,带预览、录制、自愈重连、定时调度与无头运行。GUI / --headless / systemd 三种方式一把梭。


screenshot

🆕 与旧版(单文件大脚本)相比有什么更新?

  • 模块化工程:将原本“一个 main.py 管天下”的代码,按职责拆分为入口、UI、对话框、线程(推流/预览/录制)、工具函数等模块,结构清晰、便于维护与测试。入口只负责模式分发;UI 与线程解耦,通过信号连接。
  • 三种运行形态
    • 桌面 GUI;
    • 无头 Headless(服务器/后台)--headless
    • systemd 服务安装/卸载(--install-service / --uninstall-service)。
  • 任务行式 UI 与托盘:多路“源→多目标”以列表行呈现,支持全部启动/全部停止、托盘驻留与一键显示/隐藏窗口。
  • 输入源更全面:RTSP、媒体文件、**本地摄像头(Windows dshow / Linux v4l2 / macOS avfoundation)**三类输入统一适配,分平台参数完备。
  • 现代化对话框组件:使用说明、免责声明、捐赠、现代化消息框(统一信息/警告/错误样式)等模块独立封装,样式自适应浅/深主题。
  • “获取推流码”辅助(可选):集成抓包线程(基于 pyshark / tshark)尝试自动解析平台推流地址与密钥,带超时与停止控制。
  • 升级检查更稳健:支持多镜像 URL、宽松 JSON 解析、下载进度、SHA256 校验与“最低支持版本”强提醒。
  • 定时调度:可选“时间窗内自动运行”,内置 30 秒心跳检查与偏好项联动保存。
  • 预览与录制解耦:预览线程使用 FFmpeg 管道输出 rawvideo 到 UI;录制线程单独管理推流/预览互斥,支持 RTSP 与本地摄像头。
  • 更完善的错误与引导:Help/FAQ/故障排查页签,涵盖常见报错与排查步骤;提供“导出日志 / 复制诊断信息 / 打开配置目录”。

✨ 功能特性

  • 一对多推流(tee):单路输入同时推送到多个 RTMP/RTMPS 目标,默认 H.264/AAC 编码(720p@30)。
  • 输入类型rtsp://、本地文件(可循环 -stream_loop)、本地摄像头(分平台后端与音频组合)。
  • 自愈重连/健康状态:线程化推流与日志输出,异常自动重试(详见日志与状态栏)。
  • 可视化预览:独立预览线程,按需开启/关闭;摄像头预览期间自动联动按钮状态。
  • 本地录制 MP4:支持 RTSP/摄像头录制,文件输入不重复编码保存。
  • 托盘与批量操作:全部启动/停止、隐藏到托盘后台运行。
  • 一键更新:latest.json → 下载 → 校验 → 打开安装包,全流程引导。

📦 目前项目结构

tui/
├─ main.py                        # 入口(GUI / --headless / systemd 安装)
├─ requirements.txt               # 依赖(PyQt5)
├─ README.md                      # 项目说明文档
├─ app_prefs.json                 # 应用程序偏好设置
├─ multipush_pairs.json           # 配置文件(任务对列表)
├─ assets/                        # 资源文件目录
│  ├─ app.ico                     # 应用图标
│  ├─ certs/                      # 证书目录
│  │  └─ cacert.pem               # CA证书
│  ├─ donate/                     # 捐赠相关
│  │  └─ poster.png               # 捐赠海报
│  ├─ ffmpeg/                     # FFmpeg工具
│  │  └─ bin/                     # FFmpeg二进制文件目录
│  ├─ icons/                      # 图标资源
│  │  └─ [各种图标文件]           # 各种UI图标
│  └─ wireshark/                  # Wireshark工具及依赖(pyshark/tshark 可选)
│     └─ [Wireshark相关文件]      # 程序及依赖
└─ multipush/                     # 核心模块
   ├─ __init__.py                 # 包初始化
   ├─ constants.py                # 常量、路径、resource_path
   ├─ ffmpeg_utils.py             # FFmpeg 检测/下载/CA 证书解析
   ├─ headless.py                 # --headless 运行逻辑
   ├─ systemd_utils.py            # systemd 安装/卸载
   ├─ threads/                    # 线程模块
   │  ├─ stream_thread.py         # 主推流(多目标 tee + 复用/转码/参数)
   │  ├─ record_thread.py         # 录制(RTSP/摄像头)
   │  └─ preview_thread.py        # 预览(rawvideo 管道 → UI)
   └─ ui/                         # UI模块
      ├─ dialogs.py               # 帮助/免责声明/捐赠/消息框等组件
      ├─ main_window.py           # 主窗口:任务行/托盘/更新/定时/日志等
      └─ widgets.py               # 采集设备选择/地址编辑/抓包辅助等

🚀 快速开始

环境需求

  • Python 3.8+、PyQt5、FFmpeg(程序会做可用性检查/引导安装)。

安装依赖

pip install -r requirements.txt

启动方式

GUI(默认) / 无头 / 服务安装示例同入口脚本注释中的说明:

  • GUI:python main.py
  • 无头:python main.py --headless --config /path/to/multipush_pairs.json
  • 安装服务:sudo python main.py --install-service

⚙️ 配置说明

  • 任务配置multipush_pairs.json(与 app_prefs.json 区分)。程序会在“加载配置”后把 pairs 同步到偏好路径,以便下次默认加载;保存/加载按钮在主界面工具栏。
  • 常用操作:添加/删除/复制任务行;上移/下移;全部启动/全部停止;导出/复制日志;主题切换;自动换行;定时窗口。

🖼️ 预览与录制

  • 预览:支持 RTSP / 文件 / 摄像头,预览对话框与线程绑定,关闭时安全回收;摄像头预览期间禁用“启动”以避免资源冲突。
  • 录制:支持 RTSP 与摄像头,媒体文件无需录制(可直接推流)。

❓帮助 / FAQ / 故障排查

内置使用说明对话框,含“快速开始 / 常见问题 / 故障排查”三页签,并提供“打开配置目录 / 导出日志 / 复制诊断信息”。
常见问题示例:RTMP(S) 连接失败、摄像头黑屏、无音频、自动重试提示、FFmpeg/tshark 未找到等。


🔐 免责声明

本软件仅供学习和技术研究使用;请遵守平台与当地法律法规;由违规使用导致的后果由使用者承担。内置独立的免责声明对话框可在 UI 中查看。


🗺️ 路线图

  • 可选 NVENC/QSV 硬编预设
  • 更细粒度的码率/分辨率按任务覆盖
  • 跨平台打包与自动更新

📄 许可证

MIT(若无特别说明,以仓库 LICENSE 为准)


小结:新版在工程化、稳定性、用户体验与可运维性上全面提升:更清晰的目录、可拔插的线程模块、现代化 UI/对话框、无头/服务化部署、健壮的升级渠道与辅助工具链(抓包/诊断/日志)。如果你是从旧版单文件脚本升级,直接按照“快速开始”运行即可。

About

多目标直播推流工具

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages