nginx-rtmp-module搭建流媒体服务器

nginx搭建流媒体服务器

进入新建的文件夹prog

1、下载nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git

2、下载nginx
wget http://nginx.org/download/nginx-1.14.0.tar.gz

3、下载nginx依赖模块
gzip模块需要 zlib 库、rewrite模块需要 pcre 库、ssl 功能需要openssl库

①安装pcre,只需要装开发库libpcre3-dev
sudo apt install libpcre3 libpcre3-dev

②安装openssl,只需要装个开发库
sudo apt install openssl libssl-dev

(这里选的是1.14.0版本,选择其他稳定版本可直接到官网下载 http://nginx.org/en/download.html)
也可以到https://ftp.pcre.org/pub/pcre/获取pcre编译安装包当前最新的版本
在http://www.openssl.org/source/上可以获取openssl当前最新的版本
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本

4、安装nginx

tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
(运行configure,prefix后面接你的nginx安装目录,添加模块接第三方nginx-rtmp-module模块所在目录)
./configure --prefix=/usr/local/nginx --add-module=/home/yl/prog/nginx-rtmp-module --with-http_ssl_module
make
sudo make install

5、修改nginx配置文件

#user nobody; #配置用户或者组,默认为nobody nobody
worker_processes 1; #允许生成的进程数,默认为1

error_log logs/error.log; #制定日志路径,级别
error_log logs/error.log notice;
error_log logs/error.log info;

#pid logs/nginx.pid; #指定nginx进程运行文件存放地址

events { #events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等
worker_connections 1024; #最大连接数,默认为512
}

http { #http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain

sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

#gzip on;

server { #server块:配置虚拟主机的相关参数,一个http中可以有多个server。
listen 8080; #监听端口
server_name 192.168.1.244; #监听地址

#charset koi8-r;

#access_log logs/host.access.log main;
location / { #location块:配置请求的路由,以及各种页面的处理情况
add_header Cache-Control no-cache;
root html; #根目录
index index.html index.htm; #设置默认页
}

location /stat {
rtmp_stat all; #为当前 HTTP location 设置 RTMP statistics 处理程序。RTMP statistics 是一个静态的 XML 文档。可以使用 rtmp_stat_stylesheet 指令在浏览器中作为 XHTML 页面查看这个文档
rtmp_stat_stylesheet stat.xsl; #添加 XML 样式表引用到 statistics XML 使其可以在浏览器中可视。
}
location /stat.xsl {
root /home/tqhy/prog/nginx-rtmp-module; #stat.xsl所在目录位置,该文件可复制
}
# location /control {
# rtmp_control all;
# }
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /home/tqhy/obs/hls;
expires -1;
}
# location ~\.flv {
# flv;
# }
# location ~\.mp4$ {
# mp4;
# }

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

}
rtmp{ #保存所有 RTMP 配置的块
server { #声明一个 RTMP 实例
listen 1935; #监听的端口,以接收rtmp连接

chunk_size 4000; #流整合的最大的块大小。默认值为 4096。这个值设置的越大 CPU 负载就越小。这个值不能低于 128

application live { #rtmp推流请求路径,创建一个 RTMP 应用
live on; #切换直播模式,即一对多广播

record all; #切换录制模式。流可以被记录到 flv 文件, all - 音频和视频(所有)
record_path /home/tqhy/obs/live; #指定录制的 flv 文件存放目录。
#record_max_size 200M; #设置录制文件的最大值

hls on; #在 application 切换 HLS
hls_path /home/tqhy/obs/hls; #设置 HLS 播放列表和分段目录。这一目录必须在 NGINX 启动前就已存在
hls_fragment 1s; #设置 HLS 分段长度。默认为 5 秒钟
hls_playlist_length 5; #设置 HLS 播放列表长度。默认为 30 秒钟

allow play all; #允许来自指定地址或者所有地址发布/播放。allow 和 deny 指令的先后顺序可选
}

application vod {
play /home/tqhy/obs/vod; #同一个 play 指令可以定义多个播放地址。当多个 play 指令定义时,地址列表将被合并,并进行从更高域中继承。尝试播放每一个地址,直到发现一个成功的地址。如果没有找到成功地址,将发送错误状态到客户端。
索引的 FLV 播放具有随机查找能力。没有索引的 FLV 则不具备查找/暂停能力(重播模式)。使用 FLV 索引器(比如 yamdi)来编索引。
mp4 文件只有在音频和视频编码都被 RTMP 支持时才可以播放。最常见的情况是 H264/AAC。
}
}
}

Nginx rtmp模块nginx-rtmp-module指令详解
https://www.cnblogs.com/yisionwa/p/5882585.html

然后启动nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

原文地址:https://www.cnblogs.com/lely/p/9403519.html

时间: 2024-10-16 21:34:31

nginx-rtmp-module搭建流媒体服务器的相关文章

(转)Nginx+rtmp+ffmpeg搭建流媒体服务器

(1)下载第三方扩展模块nginx-rtmp-module # mkdir module && cd module //创建一个存放模块的目录 # wget https://github.com/arut/nginx-rtmp-module/archive/master.zip //下载模块 # unzip master.zip //解压 # ls nginx-rtmp-module-master/ //查看模块目录 (2)编译安装nginx(说明:此处由于我这边已有lnmp运行项目的环境

nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 上面这两个流的地址分别是: 第一个就是推送的地址: RTMP推流地址: rtmp://serverIp:1935/myapp/test1 第二个是HTTP地址: HLS推流地址: http://serverIp:

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(十)

第十部分 -- 开发板测试 前几天已经分别将nginx和ffmpeg移植到了开发板上面,但是还是没有进行任何的测试并不知道移植后的效果如何. 今天分别做了两个测试,证明移植的结果是可用的. 1.测试ffmpeg 对于nginx的测试在移植完成后就已经进行过了,当然就是简单的能够显示nginx欢迎界面而已,但是对我来讲,nginx能用就行,并没有对他进行深一步的测试. 但是对于ffmpeg不测试下总感觉不放心,虽然移植时运行显示可以,但是还不知道它能不能工作,所以首先用它进行了视频格式转换的测试.

nginx与nginx-rtmp-module搭建流媒体服务器

转载自my student 克明zhang 现在,一起学习一下如何自己搭建一个流媒体服务器吧! 本次搭建流媒体使用的环境是centos 7.0+nginx: 让我们一起开始奇妙的流媒体之旅吧! 1.下载nginx-rtmp-module: nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module 使用命令: [php] view plain copy git clone https://github.com/ar

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(五)

第五部分 前段时间,在Ubuntu上面搭建起来了能支持HLS的流媒体服务器,最终目标是在arm的开发板上搭建这样的流媒体服务器.现在工作只是做了一小部分,正在进行移植,记录下来,方便以后继续干. 1.首先是要移植nginx到arm的开发板上面. 这个其实有人已经做过了,可以使用别人的工程. https://bitbucket.org/ntakimura/android-nginx/src/c80cb9c41a725ecf57f73a196735100aeef5b6e4/?at=android 这

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(二)

第二部分 1.昨天已经把网络摄像机的rtsp视频流成功利用FFmpeg和Nginx转换成rtmp流推送到了nginx视频服务器上面,并且通过vlc可以观看到直播视频. 今天继续昨天的工作,将rtsp的视频流推送到Nginx上面,客户端根据hls协议使用http在网页进行观看(推送的仍然是rtmp视频流),关于hls,先给一小段简单介绍: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)

第一部分 主要步骤及命令记录: 1.下载nginx,地址http://nginx.org/en/download.html,选择最新版本下载.解压.当前最新版为:nginx-1.7.9. 2.为了增加对rtmp的支持,下载nginx-rtmp-module,地址:https://github.com/arut/nginx-rtmp-module#example-nginxconf,这个是个开源项目.解压后,为了和我在网上看到的教程同步,我改了文件夹名字,将其改成了nginx-rtmp-modul

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(六)

第六部分 前几天一直被移植到ARM开发板上的nginx启动的问题困扰,在ARM开发板上启动时不是出现 nginx: [emerg] getgrnam("nogroup") failed (2: No such file or directory) 就是出现 /system/bin/sh: ./nginx: cannot execute - Permission denied 使用命令 adb shell chmod 755 /sdcard/mynginx/sbin/nginx 修改权限

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(三)

第三部分 这几天实验室搬家,闹腾的,刚刚进入状态. 接着调试,客户端浏览器根据hls协议使用http在网页进行观看直播视频,期间遇到一些小问题,记录下. 1.昨天测试的时候,遇到一个情况,就是在无论在PC机还是移动端浏览器观看视频的时候,总是出现画面丢失现象,烦人得很. 控制台也显示丢包现象严重得很. 可以看出,丢包现象到了很严重的地步.看着都糟心. 此时使用的命令是: ffmpeg -i rtsp://admin:[email protected] -vcodec copy -acodec c

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(八)

第八部分---FFmpeg移植到Android 最近这几天一直在搞FFmpeg的Android移植,我的目标是在Linux上对FFmpeg进行交叉编译最终得到可以push到Android目录下执行的ffmpeg可执行文件. 为了达到这个目的,完成对FFmpeg的移植,我可以说是查遍了几乎所有网络文章,试遍了网上的各种方法,但最终还是出现各种各样的错误,真是蛋蛋碎了一地阿! 刚刚开始试验的时候,在编译的时候小心脏还加速跳呢害怕失败出错,到后来试的多了,失败的多了直接没感觉了,想着反正没打算通过,很