# 推送H264裸流视频到RTMP服务器 **Repository Path**: aoyang888/mem-push-stream ## Basic Information - **Project Name**: 推送H264裸流视频到RTMP服务器 - **Description**: MemPushStream 是一个基于 FFmpeg 的内存推流示例项目,用于展示如何从内存中读取 H.264 数据并将其推送到 RTMP 流媒体服务器。该项目使用 Qt 编写界面部分,并实现了从文件读取、H.264 解析、内存解码到 RTMP 推流的完整流程。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-08-07 - **Last Updated**: 2025-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MemPushStream ## 介绍 MemPushStream 是一个基于 FFmpeg 的内存推流示例项目,用于展示如何从内存中读取 H.264 数据并将其推送到 RTMP 流媒体服务器。该项目使用 Qt 编写界面部分,并实现了从文件读取、H.264 解析、内存解码到 RTMP 推流的完整流程。 ## 软件架构 项目主要由以下模块组成: - `ChunkFileReader`:用于分块读取文件内容。 - `H264Parser`:用于解析 H.264 数据包并插入 SEI 信息。 - `VideoDecoder`:用于解码 H.264 视频帧。 - `RtmpPushStream`:用于将解码后的视频数据推流到 RTMP 服务器。 - `MainWindow`:主界面类,负责 UI 控制和推流流程管理。 - `VideoWidget`:视频显示控件,用于展示解码后的视频帧。 ## 安装教程 1. 安装 Qt 开发环境(如 Qt Creator 和对应的 Qt 版本)。 2. 安装 FFmpeg 开发库,确保支持 H.264 编解码和 RTMP 推流功能。 3. 克隆本仓库到本地: ``` git clone https://gitee.com/hanshuang741852/mem-push-stream ``` 4. 使用 Qt Creator 打开 `FFMPEGDemo.pro` 文件,配置编译环境并构建项目。 ## 使用说明 1. 启动程序后,通过 UI 界面选择需要推流的 `.h264` 视频文件。 2. 程序会自动解析 H.264 数据,并插入 SEI 信息。 3. 解析后的视频帧将通过 `VideoWidget` 显示在界面上。 4. 使用 `RtmpPushStream` 模块将视频数据推送到指定的 RTMP 服务器地址。 ## 参与贡献 1. Fork 本仓库。 2. 创建新分支 (`git checkout -b feature/new`) 3. 提交代码更改 (`git commit -m 'Add some feature'`) 4. 推送分支 (`git push origin feature/new`) 5. 发起 Pull Request,等待审核和合并。 ## 特技 - 支持从内存直接推流,无需将文件写入磁盘。 - 使用 Qt 信号槽机制实现模块间数据传递,结构清晰。 - 支持动态插入 SEI 信息到 H.264 流中。 - 可扩展支持更多视频格式和推流协议。 ## 开源协议 本项目遵循 MIT License,请参阅 [LICENSE](LICENSE) 文件获取详细信息。 ## 待实现功能 (1)拉流,显示视频,并解析SEI字段的内容 (2)支持其他格式的视频进行推流 ## donate ![输入图片说明](donate/donate.jpg)