# stream-tools **Repository Path**: liuhuayun/stream-tools ## Basic Information - **Project Name**: stream-tools - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 应急直播推流工具 基于 PyQt5 + FFmpeg 的桌面推流工具,支持音频文件、视频文件、麦克风设备推流,以及音视频流转换。适用于应急场景下的 RTSP/RTMP/RTP 直播推流与流转发。 --- ## 功能概览 | 功能模块 | 说明 | |----------------|------| | **音频文件推流** | 选择本地音频文件(如 MP3),推送到 RTSP/RTMP/RTP 流地址,支持循环播放、自定义编码参数 | | **视频文件推流** | 选择本地视频文件,推送到目标流地址 | | **音频设备推流** | 从系统麦克风等音频输入设备采集并推流 | | **音频流转换** | 将源流(rtsp/rtmp/rtp)拉取并转推到目标流地址 | - 登录:启动后需输入用户名、密码(默认 `admin` / `comtom@2025`,可在 `main.py` 中修改)。 - 流地址:支持手动填写,或使用「自动生成」生成带鉴权的 RTMP 地址及 RTSP/RTP 示例地址。 - 日志:每个 Tab 独立显示 FFmpeg 运行日志,同时写入 `logs/` 目录。 --- ## 环境要求 - **Python** 3.7+ - **FFmpeg**:需在运行目录或 PATH 中提供 `ffmpeg`(Windows 下可为 `ffmpeg.exe`) - 依赖见 `requirements.txt` --- ## 项目结构 ``` stream-tools/ ├── main.py # 入口:登录、图标路径、主窗口启动 ├── main_window.py # 主窗口、Tab 容器、FFmpeg 进程与状态栏 ├── audio_stream_tab.py # 音频文件推流 Tab ├── video_stream_tab.py # 视频文件推流 Tab ├── microphone_stream_tab.py # 麦克风推流 Tab ├── stream_convert_tab.py # 音频流转换 Tab ├── stream_utils.py # 流地址生成(如 RTMP 鉴权 URL) ├── exe.spec # PyInstaller 打包配置 ├── requirements.txt # Python 依赖 ├── icon.ico # 窗口/exe 图标(需自备,打包时内置) ├── test.mp3 # 默认测试音频(打包时内置) ├── ffmpeg.exe # FFmpeg 可执行文件(开发时需同目录,打包时内置) └── logs/ # 运行日志目录(自动创建) ``` --- ## 安装与运行 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` 使用国内镜像(可选): ```bash pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 或单次安装 pip install PyQt5 PyInstaller -i https://mirrors.aliyun.com/pypi/simple/ ``` ### 2. 准备 FFmpeg - 将 `ffmpeg`(Windows 下为 `ffmpeg.exe`)放在项目根目录,或 - 将 FFmpeg 所在目录加入系统 PATH ### 3. 运行程序 ```bash python main.py ``` 首次使用默认账号:**用户名** `admin`,**密码** `comtom@2025`。可在 `main.py` 中修改 `DEFAULT_USERNAME`、`DEFAULT_PASSWORD`。 --- ## 打包为 exe ### 打包前准备 - 项目根目录存在: - `icon.ico`(窗口与 exe 图标) - `test.mp3`(默认测试音频,会随 exe 一起打包) - `ffmpeg.exe`(FFmpeg 可执行文件,会随 exe 一起打包) ### 打包命令 ```bash pyinstaller --clean exe.spec ``` 生成单文件 exe:`dist/应急直播推流工具.exe`。 ### 打包内容说明 - **已内置到 exe**:`icon.ico`、`test.mp3`、`ffmpeg.exe`(运行时从 PyInstaller 解压目录读取,无需与 exe 同目录)。 即:**打包后生成的单文件 exe 可直接运行**,无需再放置任何额外文件。 --- ## 配置说明 - **登录账号**:`main.py` 中 `DEFAULT_USERNAME`、`DEFAULT_PASSWORD`。 - **底部署名**:主界面右下角「开发者:liuhy」在 `main_window.py` 中写死,可按需修改。 - **流地址默认**:`stream_utils.py` 中 RTMP 默认服务器 IP、端口、vhost、鉴权参数等可改;各 Tab 的「自动生成」会调用此处逻辑。 --- ## 技术栈 - **界面**:PyQt5 - **推流/转码**:FFmpeg(命令行调用) - **打包**:PyInstaller(单文件 exe,图标与 test.mp3 内嵌) --- ## 开发者 主界面底部状态栏:**开发者:liuhy** 如有问题可联系管理员:568656253@qq.com