心血来潮想尝试搭建一个直播服务器玩玩,想到买一个服务器没必要,毕竟自己尝试玩玩,不如先用虚拟机搭建一个内网的直播服务器试试,因为本身不是做后台服务器开发的,其实对于搭建服务器并不熟悉。在网上找了一些资料,一步步完成简单的直播服务器搭建(能推流能拉流)。
搭建环境:
虚拟机:VMware Workstations 14 Pro
系统:CentOS Linux release 7.4.1708 (Core)
CPU:双核
内存:2GB
硬盘:40GB
直播软件(推流):OBS Studio
播放软件(拉流):VLC
一、下载 nginx 和 nginx-rtmp-module 怕麻烦,可以直接用root管理员来操作,少点权限问题(我不是专业服务器开发,图省事直接用root来操作),不过实际工作不会这样子用
注意:这次我们采用源码编译的方式安装,这样才能配置上第三方module(例如:nginx-rtmp-module)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 找个地方建的文件夹存放下载的源码 mkdir nginx_source # 进入文件夹 cd nginx_source # 下载并解压 nginx源码 wget https://nginx.org/download/nginx-1.13.10.tar.gz tar -zxvf nginx-1.13.10.tar.gz # clone nginx-rtmp-module的源码(没安装git,要先安装git) git clone https://github.com/arut/nginx-rtmp-module.git # 进入nginx源码文件夹进行安装 cd nginx-1.13.110 # 没安装openssl openssl-devel的话要先安装yum -y install openssl openssl-devel ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module # 编译安装 make && make install
这次采用默认安装路径,安装后nginx在/usr/local/nginx
。 然后为了方便使用,我做了一个软连接
1 2 # 链接到/usr/local/bin/nginx ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
这样之后,就可以直接像ln、cd这类命令一样,直接使用nginx 命令
1 2 3 4 5 6 7 8 # 检查nginx安装情况 nginx -V # 然后就会显示以下信息(不同版本可能会有点不同) nginx version: nginx/1.13.10 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
至此,nginx 和 nginx-rtmp-module 就安装完成了
配置nginx服务器 修改nginx的配置文件nginx.conf
1 vi /usr/local/nginx/conf/nginx.conf
在nginx.conf里加入以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #RTMP rtmp { server { listen 1935; # listen port chunk_size 4000; # server_name 192.168.10.169; application hls { #rtmp path live on; hls on; hls_path /home/www/nginx_rtmp/html/hls; hls_fragment 5s; } } }
注意:hls_path 需要可读可写的权限
1 2 # 我直接给了个777,-R是表示包含设置所有子目录 chmod -R 777 /home/www/nginx_rtmp/html
然后修改http
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 81; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/www/nginx_rtmp/html; index index.html index.htm; } #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; }
主要改一下sever
里的 listen
,这里我改成81,不改也可以,这里只是想和80区别一下
1 2 3 4 5 # 这里根据实际需要配置路径,前面已经配置了html的读写权限,hls_path 和html的路径都需要读写权限 location / { root /home/www/nginx_rtmp/html; index index.html index.htm; }
至此,服务器基本完成了
开始直播(推流与拉流) 我采用OBS Studio 进行推流,因为简单容易就可以完成推流了
按照服务器的,IP地址端口进行配置,流名称自定义就好了,拉流的时候也是按照这个流名称来拉流的
设置好后就可以推流了
如果成功,右下角会显示绿色的
最后,我们来看看拉流,见证成果的时候 在Safari里输入http://192.168.10.169:81/hls/demo.m3u8 注意:IP地址和端口填上服务器配置好的
在iPhone 上的Safari也可以播放,不过要和服务器在同一个网段,因为这里是局域网的服务器。 至此,我们就完成了一个直播服务器了。
参考 使用nginx与nginx-rtmp-module搭建流媒体服务器