nginx-rtmp-module

rtmp服务器创建和设置

元气小坏坏 提交于 2019-12-10 21:03:34
1,安装ubuntu 16.4 依赖 sudo apt-get update sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev libxml2-dev libgd2-xpm-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libtool libpcrecpp0v5 openssl -y 2,安装nginx1.14.2   2.1 下载软件 wget http://nginx.org/download/nginx-1.14.2.tar.gz   2.2 解压软件到当前目录     tar xvf nginx-1.14.2.tar.gz 3,下载nginx-rtmp-module   git clone https://github.com/adwpc/nginx-rtmp-module.git 4,配置nginx ./configure --sbin-path=/usr/local/nginx/nginx \ --prefix=/usr/local/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local

在nginx安装nginx-rtmp-module模块

房东的猫 提交于 2019-12-03 05:02:34
1.下载nginx wget http://nginx.org/download/nginx-1.15.1.tar.gz 2.下载nginx-rtmp-module wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip 3.解压 tar -zxvf nginx-1.15.1.tar.gz unzip dev.zip 4.进入nginx-1.15目录,进行编译 ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module-dev --with-http_ssl_module --with-http_stub_status_module make 5.如果已经安装了nginx,则不用make install,否则会覆盖,在编译完nginx-1.15目录下有个objs目录,cp ./nginx /usr/local/nginx/sbin/ 把原有的nginx覆盖就好了。 6.在nginx.conf文件最后添加 rtmp { server { listen 1935; #监听的端口 chunk_size 4000; application hls { #rtmp推流请求路径 live on; hls on;

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的功能

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

这一生的挚爱 提交于 2019-11-30 16:56:47
nginx-rtmp-module 使用指令push和pull来relay媒体流数据,以便分布式部署服务。 当nginx-rtmp-module作为边缘服务器(一般不会向边缘服务器推流)时,使用pull从源服务器获取媒体流数据,俗称“回源”。先看原理图: 注意:上图是单进程模式的pull回源图。可以看出,多个连接请求同一个媒体流(RTMP的URL格式为:rtmp://host[:port]/app/stream,stream用来表示流名称)时,只会有一个回源连接去请求上游服务器。 众所周知, Nginx 绝大多数情况下使用的都是多进程模式,那么实际的pull回源图是下面的样子: 那么问题来了:由于不同的worker进程上存在着相同的流媒体请求,每个worker进程都会向上游服务器发起一个pull中继请求,这会增加带宽消耗,也会增加上游服务器的压力。 那么要如何才能解决这个问题呢?pull同名回源合并。什么意思呢?就是对于上游服务器来说,同名pull回源请求应该只有一个,而不是因为下游服务器有多个worker进程导致有多个。实现的方法跟 nginx-rtmp-module的缺陷分析 中的方法类似,最开始向上游服务器发起pull的worker进程记录流媒体信息与worker进程的映射关系,后续的pull请求先查找这个映射关系,如果查到了,就直接去已经pull的进程那里请求媒体流

用nginx搭建基于rtmp或者http的flv、mp4流媒体服务器

不问归期 提交于 2019-11-29 07:24:56
一、流媒体播放方式 1、 HTTP方式 这种方式要下载FLV视频文件到本地播放,一旦FLV视频文件下载完成,就不会消耗服务器的资源和带宽,但是拖动功能没有RTMP/RTMP流媒体方式强大,很多视频网站都是用HTTP方式实现的,如:YouTube,土豆,酷6等 2、 RTMP/RTMP流媒体方式 这种方式不用下载FLV视频文件到本地,可以实时的播放flv文件,可以任意拖拽播放进度条,但是比较消耗服务器的资源。 二、使用nginx来搭建flv流媒体服务器 1.安装git yum install git 2.安装依赖包 yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64 3、安装ffmpeg及其依赖包(我的依赖包安装在/usr/local/src下,不过安装位置可以根据个人习惯而定) 以下安装包能用yum安装的,尽量用yum来安装,没有的再wget来获得。 #wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz #tar xzvf yasm-1.2.0

nginx实现 mp4流媒体服务器

喜你入骨 提交于 2019-11-27 06:47:54
一.安装编译时说需要的扩展 yum install automake autoconf make gcc gcc-c++ 二.安装nginx-rtmp-module 2.1第一种方式比较简单 yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel 然后下载nginx,nginx-rtmp-module模块,并解压 git clone https://github.com/arut/nginx-rtmp-module.git 因为已经安装nginx,是一键安装的 #进入源代码目录 cd /usr/local/lnmp-1.4/src/ #解压 tar -xvf nginx-1.12.1.tar.gz #进入解压后的nginx 目录 cd nginx-1.12.1 #编译 ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with