From 064e08c6014bb6cc46f36479fa7d03dd8d4aa0e0 Mon Sep 17 00:00:00 2001 From: Steve Gilvarry Date: Thu, 23 Jul 2026 06:27:12 +1000 Subject: [PATCH] docs: rewrite README as standalone project continuing PHZ76/RtspServer Upstream PHZ76/RtspServer has been inactive since June 2023, so this repository is now developed independently by the ZoneMinder project. Credit the original author, document the current feature set (VP8, AV1 passthrough, G.711 u-law, sprop-parameter-sets, macOS support), fold the Chinese-only details (heartbeat detection, RTSP push, FAQ) into the English README, and remove README_CN.md rather than maintain a stale translation. Repoint links from the upstream repo to local paths and replace the personal email contact with GitHub issues. Co-Authored-By: Claude Fable 5 --- README.md | 57 +++++++++++++++++++++++++++++++++++++--------------- README_CN.md | 42 -------------------------------------- 2 files changed, 41 insertions(+), 58 deletions(-) delete mode 100644 README_CN.md diff --git a/README.md b/README.md index 65deec6..af6b416 100755 --- a/README.md +++ b/README.md @@ -1,26 +1,51 @@ -## RtspServer -A RTSP server and pusher based on C++11 +## RtspServer -[中文介绍](https://github.com/PHZ76/RtspServer/blob/master/README_CN.md) +A lightweight RTSP server and pusher library written in C++11. + +This repository is maintained by the [ZoneMinder](https://github.com/ZoneMinder) project and is the RTSP server used by ZoneMinder's `zms`/monitor streaming. It originated as a fork of [PHZ76/RtspServer](https://github.com/PHZ76/RtspServer); the original project has been inactive since 2023, so this repository is now developed independently. Many thanks to [PHZ76](https://github.com/PHZ76) for the original implementation. ## Features - - Support Linux and Windows platforms. - - Support H.264/H.265/G711A/AAC - - Support unicast(rtp over udp, rtp over rtsp), multicast - - Support digest authentication + +- Linux, Windows, and macOS platforms +- Video: H.264, H.265, VP8, AV1 (including a passthrough mode for pre-formed RTP payloads) +- Audio: AAC, G.711 A-law, G.711 µ-law +- Simultaneous audio and video in one session +- Unicast (RTP over UDP, RTP over RTSP/TCP interleaved) and multicast +- RTSP push/publish over TCP +- Digest authentication +- Connection keep-alive/heartbeat detection (unicast) +- `sprop-parameter-sets` in H.264/H.265 SDP for faster stream start-up ## Requirements -- Compiler support c++11, gcc4.8/vs2015 or above. -## Example - - [rtsp-server](https://github.com/PHZ76/RtspServer/blob/master/example/rtsp_h264_file.cpp) - - [DesktopSharing](https://github.com/PHZ76/DesktopSharing) +- A C++11 compiler (gcc 4.8+/clang or Visual Studio 2015+) +- CMake 3.10 or later + +## Examples + +- [rtsp_server.cpp](example/rtsp_server.cpp) — serve a live stream +- [rtsp_h264_file.cpp](example/rtsp_h264_file.cpp) — serve an H.264 elementary stream from a file +- [rtsp_pusher.cpp](example/rtsp_pusher.cpp) — push a stream to another RTSP server + +## Architecture + +![architecture](pic/1.pic.JPG) -## Dependencies - - [websocketpp-md5](https://github.com/zaphoyd/websocketpp) +## FAQ + +- **How do I stream a media file (mp4, mkv, ...)?** This library does not parse container formats. Use FFmpeg (or similar) to demux/read frames and feed them to a `MediaSession`. `rtsp_h264_file.cpp` shows the pattern for a raw H.264 stream. +- **The RTSP client connects but receives no data.** Capture the session with Wireshark and inspect the RTP packets; also double-check byte order (endianness) when packing frames on unusual platforms. + +## Acknowledgements + +- [PHZ76](https://github.com/PHZ76), author of the original RtspServer +- MD5 implementation from [websocketpp](https://github.com/zaphoyd/websocketpp) +- All [contributors](https://github.com/ZoneMinder/RtspServer/graphs/contributors) ## License - - [MIT License](https://github.com/PHZ76/RtspServer/blob/master/LICENSE) -## Contact - - Email: penghaoze76@qq.com +[MIT License](LICENSE) + +## Support + +Please open an [issue](https://github.com/ZoneMinder/RtspServer/issues) in this repository. For ZoneMinder-specific questions, use the [ZoneMinder forums](https://forums.zoneminder.com) or the main [ZoneMinder repository](https://github.com/ZoneMinder/zoneminder). diff --git a/README_CN.md b/README_CN.md deleted file mode 100644 index c2b150f..0000000 --- a/README_CN.md +++ /dev/null @@ -1,42 +0,0 @@ -# RtspServer - -项目介绍 -- -* C++11实现的RTSP服务器和推流器。 - -项目Demo -- -* [DesktopSharing](https://github.com/PHZ76/DesktopSharing): 抓取屏幕和麦克风的音视频数据,编码后进行RTSP转发和推流。 - -目前情况 -- -* 支持 Windows 和 Linux平台。 -* 支持 H264, H265, G711A, AAC 四种音视频格式的转发。 -* 支持同时传输音视频。 -* 支持单播(RTP_OVER_UDP, RTP_OVER_RTSP), 组播。 -* 支持心跳检测(单播)。 -* 支持RTSP推流(TCP)。 -* 支持摘要认证(Digest Authentication)。 - -编译环境 -- -* Linux: gcc 4.8 -* Windows: vs2015 - -整体框架 -- -![image](https://github.com/PHZ76/RtspServer/blob/master/pic/1.pic.JPG) - - -感谢 -- -* [websocketpp-md5](https://github.com/zaphoyd/websocketpp) - -其他问题 -- -* 如何转发或推流媒体文件? 项目目前没有实现对媒体文件的解析, 可以通过ffmpeg对文件进行帧读取再进行转发。 -* RTSP连接成功没有收到数据? (1)可以使用Wireshark分析RTP包。(2)确定系统的大小端模式。 - -联系方式 -- -* penghaoze76@qq.com \ No newline at end of file