推荐一个比较好用的流媒体服务开源代码:
ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
https://gitee.com/xiahcu/ZLMediaKit
文章目录
一个基于C++11的高性能运营级流媒体服务框架
项目特点
- 基于C++11开发,避免使用裸指针,代码稳定可靠;同时跨平台移植简单方便,代码清晰简洁。
- 打包多种流媒体协议(RTSP/RTMP/HLS),支持协议间的互相转换,提供一站式的服务。
- 使用epoll+线程池+异步网络IO模式开发,并发性能优越。
- 已实现主流的的H264/H265+AAC流媒体方案,代码精简,脉络清晰,适合学习。
- 编码格式与框架代码解耦,方便自由简洁的添加支持其他编码格式
- 代码经过大量的稳定性、性能测试,可满足商用服务器项目。
- 支持linux、macos、ios、android、windows平台
- 支持画面秒开(GOP缓存)、极低延时(500毫秒内,最低可达100毫秒)
- 支持websocket-flv直播
- ZLMediaKit高并发实现原理
项目定位
- 移动嵌入式跨平台流媒体解决方案。
- 商用级流媒体服务器。
- 网络编程二次开发SDK。
功能清单
-
RTSP
- RTSP 服务器,支持RTMP/MP4转RTSP。
- RTSPS 服务器,支持亚马逊echo show这样的设备
- RTSP 播放器,支持RTSP代理,支持生成静音音频
- RTSP 推流客户端与服务器
- 支持
rtp over udp
rtp over tcp
rtp over http
rtp组播
四种RTP传输方式 。 - 服务器/客户端完整支持Basic/Digest方式的登录鉴权,全异步可配置化的鉴权接口。
- 支持H265编码
- 服务器支持RTSP推流(包括
rtp over udp
rtp over tcp
方式) - 支持任意编码格式的rtsp推流,只是除H264/H265+AAC外无法转协议
-
RTMP
- RTMP 播放服务器,支持RTSP/MP4转RTMP。
- RTMP 发布服务器,支持录制发布流。
- RTMP 播放器,支持RTMP代理,支持生成静音音频
- RTMP 推流客户端。
- 支持http-flv直播。
- 支持https-flv直播。
- 支持任意编码格式的rtmp推流,只是除H264/H265+AAC外无法转协议
-
HLS
- 支持HLS文件生成,自带HTTP文件服务器。
- 支持播放鉴权,鉴权结果可以缓存为cookie
-
HTTP[S]
- 服务器支持
目录索引生成
,文件下载
,表单提交请求
。 - 客户端提供
文件下载器(支持断点续传)
,接口请求器
,文件上传器
。 - 完整HTTP API服务器,可以作为web后台开发框架。
- 支持跨域访问。
- 支持http客户端、服务器cookie
- 支持WebSocket服务器和客户端
- 支持http文件访问鉴权
- 服务器支持
-
其他
- 支持输入YUV+PCM自动生成RTSP/RTMP/HLS/MP4.
- 支持简单的telnet调试。
- 支持H264的解析,支持B帧的POC计算排序。
- 支持配置文件热加载
- 支持流量统计、推流播放鉴权等事件
- 支持rtsp/rtmp/http虚拟主机
- 支持flv、mp4文件录制
- 支持rtps/rtmp协议的mp4点播,支持seek
- 支持按需拉流,无人观看自动关断拉流
- 支持先拉流后推流,提高及时推流画面打开率
- 支持rtsp/rtmp/http-flv/hls播放鉴权(url参数方式)
其他功能细节表
-
转协议:
功能/编码格式 H264 H265 AAC other RTSP[S] --> RTMP/HTTP[S]-FLV/FLV Y N Y N RTMP --> RTSP[S] Y N Y N RTSP[S] --> HLS Y Y Y N RTMP --> HLS Y N Y N RTSP[S] --> MP4 Y Y Y N RTMP --> MP4 Y N Y N MP4 --> RTSP[S] Y N Y N MP4 --> RTMP Y N 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