diff --git a/README.md b/README.md index 8c317e9c..bac802d6 100644 --- a/README.md +++ b/README.md @@ -3,29 +3,32 @@ [english readme](https://github.com/xiongziliang/ZLMediaKit/blob/master/README_en.md) # 一个基于C++11的高性能运营级流媒体服务框架 + [![Build Status](https://travis-ci.org/xiongziliang/ZLMediaKit.svg?branch=master)](https://travis-ci.org/xiongziliang/ZLMediaKit) ## 项目特点 -- 基于C++11开发,避免使用裸指针,代码稳定可靠;同时跨平台移植简单方便,代码清晰简洁。 -- 打包多种流媒体协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV),支持协议间的互相转换,提供一站式的服务。 -- 使用epoll+线程池+异步网络IO模式开发,并发性能优越。 -- 已实现主流的的H264/H265+AAC流媒体方案,代码精简,脉络清晰,适合学习。 -- 编码格式与框架代码解耦,方便自由简洁的添加支持其他编码格式。 -- 代码经过大量的稳定性、性能测试,可满足商用服务器项目。 -- 支持linux、macos、ios、android、windows平台。 -- 支持画面秒开(GOP缓存)、极低延时([500毫秒内,最低可达100毫秒](https://github.com/zlmediakit/ZLMediaKit/wiki/%E5%BB%B6%E6%97%B6%E6%B5%8B%E8%AF%95))。 -- [ZLMediaKit高并发实现原理](https://github.com/xiongziliang/ZLMediaKit/wiki/ZLMediaKit%E9%AB%98%E5%B9%B6%E5%8F%91%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)。 + +- 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。 +- 打包多种流媒体协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议间的互相转换,提供一站式的服务。 +- 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。 +- 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 +- 支持linux、macos、ios、android、windows全平台。 +- 支持画面秒开、极低延时([500毫秒内,最低可达100毫秒](https://github.com/zlmediakit/ZLMediaKit/wiki/%E5%BB%B6%E6%97%B6%E6%B5%8B%E8%AF%95))。 - 提供完善的标准[C API](https://github.com/xiongziliang/ZLMediaKit/tree/master/api/include),可以作SDK用,或供其他语言调用。 - 提供完整的[MediaServer](https://github.com/xiongziliang/ZLMediaKit/tree/master/server)服务器,可以免开发直接部署为商用服务器。 +- 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。 +- 全面支持H265。 ## 项目定位 + - 移动嵌入式跨平台流媒体解决方案。 - 商用级流媒体服务器。 - 网络编程二次开发SDK。 ## 功能清单 + - RTSP - RTSP 服务器,支持RTMP/MP4转RTSP - RTSPS 服务器,支持亚马逊echo show这样的设备 @@ -63,11 +66,11 @@ - GB28181 - 支持UDP/TCP国标RTP(PS或TS)推流,可以转换成RTSP/RTMP/HLS等协议 - + - 点播 - 支持录制为FLV/HLS/MP4 - RTSP/RTMP/HTTP-FLV/WS-FLV支持MP4文件点播,支持seek - + - 其他 - 支持丰富的restful api以及web hook事件 - 支持简单的telnet调试 @@ -77,89 +80,42 @@ - 支持按需拉流,无人观看自动关断拉流 - 支持先拉流后推流,提高及时推流画面打开率 - 提供c api sdk - -## 细节列表 - -- 转协议: - - | 功能/编码格式 | H264 | H265 | AAC | other | - | :------------------------------: | :--: | :--: | :--: | :---: | - | RTSP[S] --> RTMP/HTTP[S]-FLV/FLV | Y | Y | Y | N | - | RTMP --> RTSP[S] | Y | Y | Y | N | - | RTSP[S] --> HLS | Y | Y | Y | N | - | RTMP --> HLS | Y | Y | Y | N | - | RTSP[S] --> MP4 | Y | Y | Y | N | - | RTMP --> MP4 | Y | Y | Y | N | - | MP4 --> RTSP[S] | Y | Y | Y | N | - | MP4 --> RTMP | Y | Y | Y | N | - -- 流生成: - - | 功能/编码格式 | H264 | H265 | AAC | other | - | :------------------------------: | :--: | :--: | :--: | :---: | - | RTSP[S]推流 | Y | Y | Y | Y | - | RTSP拉流代理 | Y | Y | Y | Y | - | RTMP推流 | Y | Y | Y | Y | - | RTMP拉流代理 | Y | Y | Y | Y | - -- RTP传输方式: - - | 功能/RTP传输方式 | tcp | udp | http | udp_multicast | - | :-----------------: | :--: | :--: | :--: | :-----------: | - | RTSP[S] Play Server | Y | Y | Y | Y | - | RTSP[S] Push Server | Y | Y | N | N | - | RTSP Player | Y | Y | N | Y | - | RTSP Pusher | Y | Y | N | N | - - -- 支持的服务器类型列表 - - | 服务类型 | Y/N | - | :-----------------: | :--: | - | RTSP[S] Play Server | Y | - | RTSP[S] Push Server | Y | - | RTMP | Y | - | HTTP[S]/WebSocket[S] | Y | - -- 支持的客户端类型 - - | 客户端类型 | Y/N | - | :---------: | :--: | - | RTSP Player | Y | - | RTSP Pusher | Y | - | RTMP Player | Y | - | RTMP Pusher | Y | - | HTTP[S] | Y | - | WebSocket[S] | Y | - ## 编译以及测试 + 请参考wiki:[快速开始](https://github.com/xiongziliang/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B) ## 怎么使用 + 你有三种方法使用ZLMediaKit,分别是: + - 1、使用c api,作为sdk使用,请参考[这里](https://github.com/xiongziliang/ZLMediaKit/tree/master/api/include). - 2、作为独立的流媒体服务器使用,不想做c/c++开发的,可以参考[restful api](https://github.com/xiongziliang/ZLMediaKit/wiki/MediaServer%E6%94%AF%E6%8C%81%E7%9A%84HTTP-API)和[web hook](https://github.com/xiongziliang/ZLMediaKit/wiki/MediaServer%E6%94%AF%E6%8C%81%E7%9A%84HTTP-HOOK-API). - 3、如果想做c/c++开发,添加业务逻辑增加功能,可以参考这里的[测试程序](https://github.com/xiongziliang/ZLMediaKit/tree/master/tests). ## Docker 镜像 + 你可以从Docker Hub下载已经编译好的镜像并启动它: + ```bash docker run -id -p 1935:1935 -p 8080:80 gemfield/zlmediakit:20.04-runtime-ubuntu18.04 ``` + 你也可以根据Dockerfile编译镜像: + ```bash bash build_docker_images.sh ``` ## 参考案例 + - [IOS摄像头实时录制,生成rtsp/rtmp/hls/http-flv](https://gitee.com/xiahcu/IOSMedia) - [IOS rtmp/rtsp播放器,视频推流器](https://gitee.com/xiahcu/IOSPlayer) - [支持linux、windows、mac的rtmp/rtsp播放器](https://github.com/xiongziliang/ZLMediaPlayer) - [配套的管理WEB网站](https://github.com/chenxiaolei/ZLMediaKit_NVR_UI) - [DotNetCore的RESTful客户端](https://github.com/MingZhuLiu/ZLMediaKit.DotNetCore.Sdk) - + ## 授权协议 本项目自有代码使用宽松的MIT协议,在保留版权信息的情况下可以自由应用于各自商用、非商业的项目。 @@ -167,17 +123,21 @@ bash build_docker_images.sh 由于使用本项目而产生的商业纠纷或侵权行为一概与本项项目及开发者无关,请自行承担法律风险。 ## 联系方式 + - 邮箱:<771730766@qq.com>(本项目相关或流媒体相关问题请走issue流程,否则恕不邮件答复) - QQ群:542509000 - + ## 怎么提问? + 如果要对项目有相关疑问,建议您这么做: + - 1、仔细看下readme、wiki,如果有必要可以查看下issue. - 2、如果您的问题还没解决,可以提issue. - 3、有些问题,如果不具备参考性的,无需在issue提的,可以在qq群提. - 4、QQ私聊一般不接受无偿技术咨询和支持([为什么不提倡QQ私聊](https://github.com/xiongziliang/ZLMediaKit/wiki/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E5%BB%BA%E8%AE%AEQQ%E7%A7%81%E8%81%8A%E5%92%A8%E8%AF%A2%E9%97%AE%E9%A2%98%EF%BC%9F)). - + ## 致谢 + 感谢以下各位对本项目包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后: [老陈](https://github.com/ireader) @@ -198,11 +158,9 @@ bash build_docker_images.sh [浮沉](https://github.com/MingZhuLiu) ## 捐赠 + 欢迎捐赠以便更好的推动项目的发展,谢谢您的支持! [支付宝](https://raw.githubusercontent.com/xiongziliang/other/master/IMG_3919.JPG) [微信](https://raw.githubusercontent.com/xiongziliang/other/master/IMG_3920.JPG) - - -