Project Features
- Based on C++11 development, the use of bare pointers is avoided, the code is stable and reliable, and the performance is superior.
- Supports multiple protocols (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and supports protocol interchange.
- Developed using multiplexing/multithreading/asynchronous network IO mode, it has superior concurrent performance and supports massive client connections.
- The code has undergone a large number of long-term stability and performance tests, and has been commercialized online for a long time.
- Support linux, macos, ios, android, windows all platforms.
- Supports screen opening in seconds and extremely low latency (within 500 milliseconds, the minimum can reach 100 milliseconds).
- Provide a complete standard C API, which can be used as SDK or called by other languages.
- Provide a complete MediaServer server, which can be directly deployed as a commercial server without development.
- Provide complete restful api and web hook to support rich business logic.
- The video monitoring protocol stack and the live broadcast protocol stack are opened, and the RTSP/RTMP support is perfect.
- Full support for H265/H264/AAC/G711/OPUS.
- The functions are complete, supporting functions such as clustering, on-demand transfer protocol, on-demand push-pull streaming, first-broadcasting and then-pulling, and interrupted continuous push.
- Extreme performance, stand-alone 10W level player, 100Gb/s level io bandwidth capability.
- The ultimate experience, exclusive features
- Who is using zlmediakit?
- Full support for ipv6 network
Project positioning
- Mobile embedded cross-platform streaming solution.
- Commercial grade streaming media server.
- Network programming secondary development SDK.
Feature list
Function list
RTSP[S]
- RTSP[S] Server, support RTMP/MP4/HLS to RTSP[S]support devices like Amazon echo show
- RTSP[S] Player, supports RTSP proxy, supports generating silent audio
- RTSP[S] Streaming client and server
- support
rtp over udp
rtp over tcp
rtp over http
rtp组播
Four RTP transmission methods - Server/client fully supports Basic/Digest login authentication, fully asynchronous and configurable authentication interface
- Support H265 encoding
- The server supports RTSP streaming (including
rtp over udp
rtp over tcp
Way) - Support H264/H265/AAC/G711/OPUS encoding, other encodings can be forwarded but not protocol
RTMP[S]
- RTMP[S] Play server, support RTSP/MP4/HLS to RTMP
- RTMP[S] Publisher, which supports recording and publishing streams
- RTMP[S] Player, supports RTMP proxy, supports generating silent audio
- RTMP[S] Push client
- support http[s]-flv live
- Support websocket-flv live broadcast
- Support H264/H265/AAC/G711/OPUS encoding, other encodings can be forwarded but not protocol
- Support RTMP-H265
- Support RTMP-OPUS
HLS
- Support HLS file generation, comes with HTTP file server
- Through cookie tracking technology, HLS playback can be simulated as a long connection, and services such as HLS on-demand streaming and playback statistics can be realized.
- Support HLS broadcaster, support streaming HLS to rtsp/rtmp/mp4
- Support H264/H265/AAC/G711/OPUS encoding
TS
- support http[s]-ts live
- support ws[s]-ts live
- Support H264/H265/AAC/G711/OPUS encoding
fMP4
- support http[s]-fmp4 live streaming
- support ws[s]-fmp4 live streaming
- Support H264/H265/AAC/G711/OPUS encoding
HTTP[S]with WebSocket
- Server support
目录索引生成
,文件下载
,表单提交请求
- Client provides
文件下载器(支持断点续传)
,接口请求器
,文件上传器
- A complete HTTP API server, which can be used as a web background development framework
- Support cross-domain access
- Support http client, server cookies
- Supports WebSocket server and client
- Support http file access authentication
- Server support
GB28181 and RTP push stream
- Support UDP/TCP national standard RTP (PS or TS) streaming server, which can be converted into RTSP/RTMP/HLS and other protocols
- Support RTSP/RTMP/HLS to national standard push stream client, support TCP/UDP mode, provide corresponding restful api
- Support H264/H265/AAC/G711/OPUS encoding
- Support Haikang ehome push stream
MP4 on demand and recording
- Support recording to FLV/HLS/MP4
- RTSP/RTMP/HTTP-FLV/WS-FLV supports MP4 file on demand, supports seek
- Support H264/H265/AAC/G711/OPUS encoding
WebRTC
- Support WebRTC push stream, support transfer to other protocols
- Support WebRTC playback, support other protocols to WebRTC
- Support bidirectional echo test
- Support simulcast push stream
- Support uplink and downlink rtx/nack packet loss retransmission
- Supports single-port, multi-threading, client-side network connection migration (the only one in the open source world).
- Support TWCC rtcp dynamic bit rate adjustment
- Support remb/pli/sr/rr rtcp
- Support rtp extension parsing
- Support GOP buffering, webrtc playback in seconds
- support datachannel
SRT support
other
- Support rich restful api and web hook events
- Support simple telnet debugging
- Support configuration file hot loading
- Support traffic statistics, push-pull flow authentication and other events
- Support virtual host, can isolate different domain names
- Support on-demand streaming, and automatically shut down streaming when no one is watching
- Support first play and then push stream, improve the open rate of timely push stream screen
- provide c api sdk
- Support FFmpeg to pull stream and proxy any format stream
- Support http api to generate and return real-time screenshots
- Support on-demand demultiplexing and protocol transfer, and enable transfer protocol only when someone is watching, reducing CPU usage
- Supports the cluster deployment of traceability mode, the traceability mode supports rtsp/rtmp/hls/http-ts, the edge station supports hls, and the source station supports multiple sources (the round robin method is used for traceability)
- After the rtsp/rtmp/webrtc push stream is abnormally disconnected, the push stream can be reconnected within the timeout period, and the player does not perceive it
compile and test
Be sure to refer to the wiki carefully before compiling: Quick Start!!!
how to use
You have three ways to use ZLMediaKit, namely:
- 1. Use c api as sdk, please refer to here.
- 2. Use as an independent streaming media server, if you don’t want to do c/c++ development, you can refer to restful api and web hook.
- 3. If you want to do c/c++ development, add business logic and add functions, you can refer to the test program here.
Docker image
You can download the compiled image from Docker Hub and start it:
#此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
You can also compile the image according to the Dockerfile:
bash build_docker_images.sh
Cooperation projects
Visual management website
Streaming Media Management Platform
client
player
License Agreement
The project’s own code uses the loose MIT protocol, and can be freely applied to their respective commercial and non-commercial projects while retaining copyright information. However, this project also uses some other open source code piecemeal, please replace or delete it by yourself in the case of commercial use; commercial disputes or infringements arising from the use of this project have nothing to do with this project and the developers, please bear the law by yourself risk. When using the code of this project, the agreement of the third-party library that this project depends on should also be indicated in the authorization agreement.
contact details
- Email: 1213642868@qq.com (For questions related to this project or streaming media, please go through the issue process, otherwise no email reply will be given)
- QQ group: QQ group number is in the wiki, please read the wiki and add the group
How to ask?
If you have questions about the project, we recommend that you do the following:
- 1. Look carefully at the readme and wiki, and check the issue if necessary.
- 2. If your problem has not been solved, you can file an issue.
- 3. For some questions, if they are not for reference, they do not need to be raised in the issue, but can be raised in the QQ group.
- 4. QQ private chat generally does not accept free technical consultation and support (why not advocate QQ private chat).
Special thanks to
This project adopts Lao Chen’s media-server library. The multiplexing and demultiplexing of the ts/fmp4/mp4/ps container format of this project all depend on the media-server library. In the realization of many functions of this project, Lao Chen has given selfless enthusiasm and key help many times, and I would like to express my sincere thanks to him!
Thanks
Thanks to the following people for their support to this project, including but not limited to code contributions, problem feedback, fund donations, etc.! The following ranks are in no particular order:
Old Chen Gemfield Nanguantong bumpy slow chenxiaolei Prehistoric insect clear green tea 3503207480 DroidChow Asai Huoxuan rui ミlinkingvision eggplant good mood floating Xiaofeng Wang doodoocoder qingci swwheihei KKKKK5G Zhou Weimin Jim Jin watermelon, MingZhuLiu chengxiaosheng big panda tanningzhong hctym1995 hewenyuan sunhui mirs Kevin Cheng Liu Jiang along qingci lyg1949 zhlong 大裤衩droid.chow 陈晓林CharleyWangHZ Johnny DoubleX69 lawrencehj yangkun Xinghua Zhao hejilin rqb500 Alex Dw9 明月惊鹊cgm hejilin alexliyu7352 cgm haorui wang joshuafc JayChen0519 zx wangcker WuPeng starry mtdxc 胡刚风zhao85 dreamisdream dingcan Haibo Chen Leon custompal PioLing KevinZang gongluck
Use Cases
This project has been recognized by many companies and individual developers. According to the author’s incomplete statistics, the companies using this project include well-known Internet giants, top-ranked cloud service companies in China, many well-known AI unicorn companies, and A range of small and medium-sized companies. Users can endorse this project by pasting the company’s name and related project introductions on the issue, thank you for your support!
#ZLMediaKit #lightweight #streaming #media #framework #implementing #RTSPRTMPHLSHTTP #protocols #supporting #large #concurrent #connection #requests