nginx-http-flv-module

基于nginx-rtmp-module模块实现的基于HTTP协议的FLV直播模块(nginx-http-flv-module)

时间秒杀一切 提交于 2021-01-11 04:06:30
近几年直播行业火爆,开源的直播软件解决方案有 SRS (Simple-RTMP-Server)和 nginx-rtmp-module ,前者是国人发起的一个优秀的开源项目,目前国内很多公司都使用它作为直播解决方案,由C++编写;后者依赖 Nginx ,以第三方模块的方式提供直播功能,由C编写。SRS采用多线程方式,性能优秀,经受住了众多场景的考验,但是SRS3已经闭源(更正,中间一段时间闭源,现在又开源了);nginx-rtmp-module是采用多进程方式,Nginx的性能优秀,但是据网友测试,nginx-rtmp-module的性能不如SRS,并且nginx-rtmp-module的作者已经很久没有更新版本了,支持的功能也有限,例如不支持HTTP方式的FLV直播,而这是国内直播行业普遍采用的方式;不支持虚拟主机功能,在有多个IP地址的主机上无法根据域名选择不同配置;还有饱受诟病的播放响应延迟时间很长的问题(即俗称的不能秒播)等。 我在nginx-rtmp-module的基础上实现了基于HTTP方式的FLV直播功能,支持GOP缓存,减少播放响应延迟时间;支持流式和Transfer-Encoding: chunked两种HTTP响应格式;支持根据域名匹配不同配置的虚拟主机功能;修复nginx-rtmp-module没有listen配置项时,推流失败的问题;解决nginx-rtmp

centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)

筅森魡賤 提交于 2020-05-05 04:20:20
搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master/README.CN.md centos7+nginx+rtmp+ffmpeg搭建流媒体服务器 1.安装前需要的工具 # net-tool 查本地IP # wget 下载安装包 # unzip 解压zip包 # gcc gcc-c++ perl 编译软件包用 yum install -y net-tools wget unzip gcc gcc-c++ perl 2. 将将Centos的yum源更换为国内的阿里云源 # 备份yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清空缓存 yum makecache 3. 安装nginx及rtmp 将当前目录切换的 /home 下 # 切换的homme目录 cd /home 1. 下载并解压pcre # 下载pcre包 wget ftp:

如何实现网页播放rtmp流媒体

不问归期 提交于 2019-12-26 17:46:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近公司有个需求,要对公司食堂的监控视频进行轻量改造,去除以前对海康插件的依赖,让手机也能顺畅地播放,于是乎在网上搜刮了相关资料,大多数文章都提到了对rtsp进行转码处理后,再通过网页的形式播放支持的流媒体,但大多博主充分发挥了“拿来主义”,却并未进行验证,导致我们在按部就班的时候没法实现我们需要的,在经过了不断地试错之后,现总结出以下的流程,也希望大家能少走弯路。 监控直播采用了FFMPEG转码->Nginx提供rtmp/hls服务->videojs网页解码播放的整体思路。 1.首先需要安装nginx以及对应的nginx的rtmp模块nginx-rtmp-module-master。 我们采用的是源码安装,参考自 https://blog.csdn.net/liuchen1206/article/details/77771703 ,感谢渔村居士的脚本和软件。下载好该博文提供的脚本软件(可以从这里下载:http://download.csdn.net/download/liuchen1206/10167705),直接解压后执行脚本就可以实现ngnix以及相关组件的安装。软件包括:nginx,nginx-http-flv-module-master,nginx-rtmp-module-master,openssl

nginx-rtmp-module的缺陷分析(三)

允我心安 提交于 2019-12-01 20:44:45
VHOST(虚拟主机)就是一址多域的意思,主流的Web服务器都有这个功能,它解决了运行Web的主机在同一个IP地址情况下可以为不同域名的请求提供服务的问题。假设有两个域名A和B,在DNS上A和B都指向同一个A记录(IPv4)或者AAAA记录(IPv6),Web服务器通过不同的域名信息解析到不同的配置,从而为A和B提供不同的服务。 Nginx 根据请求的信息(端口,IP地址和域名)匹配到对应的配置的大概过程如下: nginx-rtmp-module 有个严重的问题:如果在rtmp配置块里没有listen选项,那么它根本就不能运行,因为没有默认监听任何端口。而且就算配置了listen选项,它也无法根据域名找到正确的配置。例如有如下配置: rtmp { server { listen 1935; ... } server { listen 1935; ... } } 我如果想推流到第二个server配置块里的某个application,nginx-rtmp-module只能将流推到第一个server配置块里的某个application,因为它没有像Nginx本身提供的server_name配置项的功能。究其原因,是因为nginx-rtmp-module没有实现上图中的“有无域名匹配”和“域名是否匹配”的功能。这个问题还导致stat.xsl也没有考虑适配VHOST的功能