如何快速构建一套稳定、高效、可靠的网页无插件直播点播系统?
目前直播流媒体市场已经比较成熟,比较出名的流媒体直播点播服务器有:
代码语言:txt复制1. 开源流媒体服务SRS
2. 基于NGINX的RTMP直播点播开源流媒体服务器NGINX-RTMP-MODULE
3. SkeyeVSS RTSP/RTMP/FLV/WS-RTSP/HLS流媒体服务器
SRS开源流媒体服务
SRS 简介
SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,
包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、
转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。
SRS包含支大规模集群如CDN业务的关键特性,譬如RTMP
多级集群、源站集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群、Kafka对接。此外,SRS还提供丰富的应用接口,包括HTTP回调、
安全策略Security、HTTP API接口、RTMP测速。SRS在源站和CDN集群中都得到了广泛的应用Applications。
官方说明
SRS特点
代码语言:txt复制1、简单,足够稳定。
代码语言:txt复制2、高性能,高并发,SRS是单线程、事件/st-线程驱动。最大可支持6k客户端。官网性能介绍: 性能测试
代码语言:txt复制3、可以作为rtmp源服务器,也可作为节点对接CND,从其他rtmp服务器上推/拉流。
代码语言:txt复制4、支持Vhost 及defaultVhost配置。
代码语言:txt复制5、核心功能是分发RTMP,主要定位就是分发RTMP低延时流媒体,同时支持分发HLS流。
代码语言:txt复制6、服务Reload 机制,即在不中断服务时应用配置的修改。达到不中断服务调整码率,添加或调整频道。
代码语言:txt复制7、cache 一个GOP ,达到播放器能快速播放的效果。(gop_cache配置项)
代码语言:txt复制8、可监听多个端口,支持长时间推拉流。
代码语言:txt复制9、forward配置项,可在服务器间转发流。
代码语言:txt复制10、支持转码,可以对推送到SRS的RTMP流进行转码,然后输出到其他RTMP服务器。可对指定的流配置是否转码。内置了FFMPEG.同时会提供FFMPEG的部分功能:输出纯音频、加文字水印、剪切视频、添加图片LOGO等。
代码语言:txt复制11、支持http回调,提供了客户端连接接口、关闭连接接口、流发布、流停止、流播放、停止播放等接口,方便再封装的应用跟踪流信息。内置也有一个http服务器,可直接调用api接口。
代码语言:txt复制12、内置流带宽测试工具、完善的日志跟踪规则。
代码语言:txt复制13、脚本管理,提供init.d系统脚本,也可通过调用api 控制服务状态。
代码语言:txt复制14、采集端支持:设备、本地文件,RTSP摄像头、rtmp等。官方意思是,能拉任意的流,只要FFMPEG支持,不是h264/aac都没有关系,FFMPEG能转码。SRS的接入方式可以是“推流到SRS”和“SRS主动拉流”。
代码语言:txt复制15、支持将RTMP流录制成flv文件。FLV文件的命名规则是随机生成流名称,上层应用可通过http-callback 管理流信息。
代码语言:txt复制16、SRS日志很完善,支持打印到console和file,支持设置level,支持连接级别的日志,支持可追溯日志。
推荐大家使用SkeyeVSS综合安防视频云服务:
- 1,复杂的安防系统简单化,一键安装一键部署,一键启动,SkeyeVSS部署简单,不管是windows还是linux系统,分分钟就可以完成部署;支持横向互联,纵向级联,流媒体集群化部署。
- 2,SkeyeVSS配置简单,安装完成后,如果不考虑流媒体和接入服务集群,单台设备即可自动完成各服务组件的自动接入和配置,我们只需要关心设备接入和业务配置即可。
- 3,功能齐全,支持多网域、多地域监控视频资源接入系统进行统一管理,SkeyeVSS涵盖了无插件直播、无插件回放、设备控制、报警管理、服务器集群等方方面面,其独有的ws-rtsp流媒体技术,可以无缝对接安防监控系统。
- 4,稳定可靠,系统低耦合,采用分布式微服务架构,可灵活配置安防系统中的各个子系统服务,SkeyeVSS支持7*24小时运行,各服务组件运行时均有看门狗监控服务,保证各服务节点的稳定运行。
- 5,高效的流媒体分发和超低延迟的直播技术,保障网页无插件直播的实时行和高可用性;兼容传统安防流媒体的同时,不需要安装插件等。
- 6,低廉的价格,为了便于系统推广,6路以下的设备接入直接永久免费试用,几千块钱即可构建一套功能强大、稳定、高效、可靠的网页无插件直播点播系统。
基于NGINX的RTMP直播点播开源流媒体服务器
一、安装加载nginx-rtmp-module模块的nginx
1、到nginx.org 下载稳定版本的nginx
2、到 https://github.com/arut/nginx-rtmp-module 下载rtmp模块(git clone https://github.com/arut/nginx-rtmp-module.git)
解压nginx的tar包;nginx 和trmp模块在同一目录
nginx-1.12.2 nginx-1.12.2.tar.gz nginx-rtmp-module
3、到nginx解压目录配置编译参数
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module.1.1.4 --with-http_ssl_module
4、make && make install 安装
如果已安装nginx可以在已有nginx上面增加模块:参考https://www.cnblogs.com/zhangmingda/p/12622590.html
二、配置nginx rtmp直播功能nginx.conf
代码语言:txt复制 server {
代码语言:txt复制 listen 8080;
代码语言:txt复制 #配置RTMP状态一览HTTP页面=========================================
代码语言:txt复制 location /stat {
代码语言:txt复制 rtmp_stat all;
代码语言:txt复制 rtmp_stat_stylesheet stat.xsl;
代码语言:txt复制 }
代码语言:txt复制 location /stat.xsl {
代码语言:txt复制 root /opt/rtmp/nginx-rtmp-module/;
代码语言:txt复制 }
代码语言:txt复制 #配置RTMP状态一览界面结束==========================
代码语言:txt复制 #HTTP协议访问直播流文件配置
代码语言:txt复制 location /hls { #添加视频流存放地址。
代码语言:txt复制 types {
代码语言:txt复制 application/vnd.apple.mpegurl m3u8;
代码语言:txt复制 video/mp2t ts;
代码语言:txt复制 }
代码语言:txt复制 #访问权限开启,否则访问这个地址会报403
代码语言:txt复制 autoindex on;
代码语言:txt复制 alias /usr/share/nginx/html/hls;#视频流存放地址,与下面的hls_path相对应,这里root和alias的区别可自行百度
代码语言:txt复制 expires -1;
代码语言:txt复制 add_header Cache-Control no-cache;
代码语言:txt复制 #防止跨域问题
代码语言:txt复制 add_header 'Access-Control-Allow-Origin' '*';
代码语言:txt复制 add_header 'Access-Control-Allow-Credentials' 'true';
代码语言:txt复制 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
代码语言:txt复制 add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
代码语言:txt复制 }
代码语言:txt复制 }
代码语言:txt复制}
代码语言:txt复制#点播/直播功能实现配置rtmp协议
代码语言:txt复制rtmp {
代码语言:txt复制 server {
代码语言:txt复制 listen 1935;
代码语言:txt复制 chunk_size 4000;
代码语言:txt复制 application vod {
代码语言:txt复制 play /usr/share/nginx/html/vod/flvs/;#点播媒体存放目录
代码语言:txt复制 }
代码语言:txt复制 application live {
代码语言:txt复制 live on;
代码语言:txt复制 }
代码语言:txt复制 #HLS直播配置
代码语言:txt复制 application hls {
代码语言:txt复制 live on;
代码语言:txt复制 hls on;
代码语言:txt复制 hls_path /usr/share/nginx/html/hls;#视频流存放地址
代码语言:txt复制 hls_fragment 5s;
代码语言:txt复制 hls_playlist_length 15s;
代码语言:txt复制 hls_continuous on; #连续模式。
代码语言:txt复制 hls_cleanup on; #对多余的切片进行删除。
代码语言:txt复制 hls_nested on; #嵌套模式。
代码语言:txt复制 }
代码语言:txt复制 }
代码语言:txt复制}
SkeyeVSS RTSP/RTMP/FLV/WS-RTSP/HLS流媒体服务器
SkeyeVSS综合安防视频云服务, 提供一站式私有化部署视频安防综合管理系统解决方案。SkeyeVSS秉持网络化、集成化、智能化的理念,采用先进的软硬件开发技术,解决了综合安防系统集中管理、多级联网、信息共享、互联互通、多业务融合等问题。
SkeyeVSS其独创的ws-rtsp流媒体直播技术,兼容传统安防流媒体的同时,不需要安装浏览器插件,解决互联网接入安防监控延迟高、起播慢等问题;支持全平台终端H5直播点播(PC、Web、Android、iOS)。