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