内容简介:我们接下来要做的是rtmp推流功能,第一步就是需要会搭建一个rtmp服务被用于推流,所以下面介绍了两种最常用的rtmp推流服务搭建方式:nginx编译依赖gcc环境nginx的http模块使用pcre来解析正则表达式
我们接下来要做的是rtmp推流功能,第一步就是需要会搭建一个rtmp服务被用于推流,所以下面介绍了两种最常用的rtmp推流服务搭建方式:
- 服务端搭建nginx用于远程推流服务(在云主机搭建,随时随地可以推流)
- 为了避免外网环境差等因素,在本地mac终端搭建nginx用于推流
centos服务器搭建rtmp推流服务
安装gcc
nginx编译依赖gcc环境
yum -y install gcc gcc-c++ 复制代码
安装pcre pcre-devel
nginx的http模块使用pcre来解析正则表达式
yum install -y pcre pcre-devel 复制代码
安装zlib
nginx使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel 复制代码
安装open ssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel 复制代码
下载并解压nginx-rtmp-model
#下载rtmp包 wget https://github.com/arut/nginx-rtmp-module/archive/master.zip #解压下载包(centos中默认没有unzip命令,需要yum下载) unzip -o master.zip #修改文件夹名 mv nginx-rtmp-module-master nginx-rtmp-module 复制代码
安装nginx
#下载nginx wget http://nginx.org/download/nginx-1.13.8.tar.gz #解压nignx tar -zxvf nginx-1.13.8.tar.gz #切换到nginx中 cd nginx-1.13.8 #生成配置文件,将上述下载的文件配置到configure中 ./configure --prefix=/usr/local/nginx --add-module=/home/nginx-rtmp-module --with-http_ssl_module #编译程序 make #安装程序 make install #查看nginx模块 nginx -V 复制代码
修改配置nginx
vi /usr/local/nginx/conf/nginx.conf 复制代码
#工作进程 worker_processes 1; #事件配置 events { worker_connections 1024; } #RTMP配置 rtmp { server { #监听端口 listen 1935; # application myapp { live on; } #hls配置 application hls { live on; hls on; hls_path /tmp/hls; } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } #配置hls location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; add_header Cache-Control no-cache; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 复制代码
启动nginx
/usr/local/nginx/sbin/nginx 复制代码
推送rtmp流
ffmpeg -re -i "/home/123.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 640x480 -q 10 rtmp://localhost:1935/myapp/test1 复制代码
mac上搭建rtmp服务器
安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 复制代码
安装nginx
brew tap denji/nginx brew install nginx-full --with-rtmp-module 复制代码
安装过程中会提示需要安装xcode command line tool,Mac最新场景下安装Xcode时已经没有Command Line了,需要单独安装。根据提示在使用命令xcode-select --install
在apple官网下载对应的版本并安装 developer.apple.com/download/mo…
我当前的开发环境是:
- macOS Mojave-10.14.5
- XCode version-10.2.1
所以下载的版本对应如下图所示:
查看nginx安装信息:
brew info nginx-full 复制代码
显示如下:
==> Caveats Docroot is: /usr/local/var/www The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that nginx can run without sudo. nginx will load all files in /usr/local/etc/nginx/servers/. - Tips - Run port 80: $ sudo chown root:wheel /usr/local/Cellar/nginx-full/1.17.1/bin/nginx $ sudo chmod u+s /usr/local/Cellar/nginx-full/1.17.1/bin/nginx Reload config: $ nginx -s reload Reopen Logfile: $ nginx -s reopen Stop process: $ nginx -s stop Waiting on exit process $ nginx -s quit To have launchd start denji/nginx/nginx-full now and restart at login: brew services start denji/nginx/nginx-full Or, if you don't want/need a background service you can just run: nginx 复制代码
nginx安装位置:
/usr/local/Cellar/nginx-full/ 复制代码
nginx配置文件位置:
/usr/local/etc/nginx/nginx.conf 复制代码
nginx服务器根目录位置:
/usr/local/var/www 复制代码
验证是否安装成功,执行命令:
nginx 复制代码
然后浏览器中输入http://localhost:8080,出现以下界面,证明安装成功
配置nginx
nginx
的配置文件在 /usr/local/etc/nginx
目录下,选择编辑器打开 nginx.conf
文件,在http节点后面添加rtmp配置。
http{ ... } #在http节点后面加上rtmp配置 rtmp { server { # 监听端口 listen 1935; # 分块大小 chunk_size 4000; # RTMP 直播流配置 application rtmplive { # 开启直播的模式 live on; # 设置最大连接数 max_connections 1024; } # hls 直播流配置 application hls { live on; hls on; # 分割文件的存储位置 hls_path /usr/local/var/www/hls; # hls分片大小 hls_fragment 5s; } } } 复制代码
在http节点内的server节点内增加配置:
http { ... server { ... location / { root html; index index.html index.htm; } location /hls { # 响应类型 types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /usr/local/var/www; # 不要缓存 add_header Cache-Control no-cache; } ... } ... } 复制代码
配置完成后,使用下面命令重启nginx:
nginx -s stop // 关闭nginx nginx // 打开nginx nginx -s reload // 重启nginx 复制代码
测试
- 测试rtmp推流
首先使用ffmpeg网rtmp服务器推流:
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/room1 复制代码
利用ffplay或者vlc查看:
ffplay -i rtmp://localhost:1935/rtmplive/room1 复制代码
- 测试hls推流
ffmpeg -re -i Test.MOV -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/hls/stream 复制代码
利用ffplay或者vlc查看:
ffplay -i rtmp://localhost:1935/hls/stream 复制代码
也可以在浏览器中输入 http://localhost:8080/hls/stream.m3u8
地址查看hls流:
下篇文章将详细介绍如何在ios平台实现rtmp推流。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 服务器完整搭建jupyter 科学环境服务
- Web服务器搭建
- 搭建 etcd discovery 服务
- 如何搭建HTTP/HTTPS服务
- Linux下Memcache服务搭建
- jenkins搭建一个持续集成服务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
世界因你不同:李开复自传(纪念版)
李开复,范海涛 著作 / 中信出版社 / 2015-7-10 / 39.00
编辑推荐 1.李开复唯一一部描写全面生平事迹的传记:《世界因你不同:李开复自传》书中讲述了家庭教育培育的“天才少年”;学校教育塑造的“创新青年”,走入世界顶级大公司,苹果、微软、谷歌等亲历的风云内幕,岁月30载不懈奋斗、追求事业成功的辉煌历程。 2.娓娓道来、字字珠玑、可读性和故事性皆佳。李开复博士是青少年成长成才的励志偶像,年轻家长、学校教师阅读后也能从中得到感悟和启发。 3.......一起来看看 《世界因你不同:李开复自传(纪念版)》 这本书的介绍吧!