首页

centos下利用nginx+ffmpeg搭建直播推流服务

手头有台闲置的服务器,前段时间搭了个aria2c视频下载服务下了些资源。直接在网页上打开资源有点慢所以想着开个在线播放的服务,于是想到以前玩的nginx+ffmpeg直播推流。下面是搭建过程: 1、nginx+推流模块的安装。 原本我服务器上是有nginx服务的,奈何没有推流模块需要安装rtmp推流模块扩展。查了一圈nginx的rtmp扩展是没有现成的yum安装包依赖的只能自己去github下载模块然后重新把rtmp模块编译进nginx。本来我的nginx服务也没放任何项目,折腾一阵发现还不如重新编译安装一遍nginx。于是卸载了现有的nginx服务 yum remove nginx,然后下载rtmp模块和nginx源码。 <code> ###### nginx我这里下载的是nginx-1.20.1 # wget http://nginx.org/download/nginx-1.20.1.tar.gz ###### 下载rtmp模块和相关依赖 # wget https://github.com/winshining/nginx-http-flv-module/archive/master.zip ###### 解压并安装 # tar -xvf nginx-1.20.1.tar.gz # unzip master.zip ###### 如果提示unzip不存在则安装下 yum install unzip -y ###### 编译安装nginx # cd nginx-1.20.1 # ./configure --add-module=../nginx-http-flv-module-master # make && make install ###### 编译安装过程没有报错的话nginx至此安装完成 ###### </code> 2、启动推流服务。 要先配置nginx监听1935端口,然后用ffmpeg把视频流推到nginx监听的1935端口。 修改/usr/local/nginx/conf/nginx.conf,如果没有在此目录的话可以find / -name nginx.conf查找一下配置文件。nginx的rtmp配置如下: <code> rtmp { server { listen 1935; chunk_size 2048; drop_idle_publisher 10s; application mylive { live on; record off; } application hls { live on; hls on; hls_path /tmp/hls; hls_continuous on; } } } </code> 这段配置应该放在nginx.conf的 http { 这行之前。 配置好后尝试启动nginx服务 /usr/local/nginx/sbin/nginx,如果找不到nginx服务也可以find / -name nginx,找到的列表中一般在/usr/sbin/nginx或者/usr/local/nginx/sbin/nginx 成功启动后使用ffmpeg推流。 # ffmpeg -re -i 你的视频地址(如/home/zhangsan/test.mp4) -c copy -f flv rtmp://0.0.0.0:1935/mylive/play 如果提示ffmpeg命令不存在则安装相关依赖 <code> # rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro # rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm # yum install ffmpeg ffmpeg-devel -y </code> 3、收看自己推送的视频流。 看视频流我采用的VLC这个拉流软件 <img src="https://opt.nextfix.cn/uploads/58ad139bd93ba5997f76d10c3f240c46.png"/> 填入拉流地址 <img src="https://opt.nextfix.cn/uploads/18c131992901956fc9c2fecf9adc2c47.png"/> 如果播放不了则需要检查服务器1935端口是否打开,服务器控制台安全策略需要打开1935,服务器也要给这个端口放行,然后检查下自己地址填错没。 <img src="https://opt.nextfix.cn/uploads/5b3c93d613a12ef4fbb40b468990738b.jpg"/>
更多>>
关于MySQL数据库的布尔类型 laravel-admin诡异的页面缓存报错 神奇的空白字符 GuzzleHttp报错信息不完整,异常被信息被截断,而且需要完整错误信息 为什么苹果开发者不续费了会影响已经上架的app内购?