CentOS7+nginx+rtmp+ffmpeg搭建流媒体服务器 小鱼儿 2023-07-09 05:29 1阅读 0赞 上次搭建了nginx文件服务器,这次遇到摄像头传时实录像到前台,需要搭建一个流媒体服务器 在搭建之前由于服务器上本来使用yum install nginx安装过一个nginx,这个nginx还跑着某些占用了某些端口,我们需要卸载这个nginx,不过为了不删数据跑路,我们暂时就不干掉这个nginx了 #查看nginx的进程 ps -ef | grep nginx #干掉所有nginx进程 #如果提示killall没有则需要yum install psmisc安装 killall nginx #首先下载一些可能用到的软件包 如果不够后续编译安装报错再继续下载 yum install -y net-tools wget unzip gcc gcc-c++ perl openssl pcre zlib git #下载nginx-rtmp-module模块 git clone https://github.com/arut/nginx-rtmp-module.git #下载nginx并解压 #nginx的官方网站为:http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.8.1.tar.gz tar -zxvf nginx-1.8.1.tar.gz 下载好之后解压如下 ![在这里插入图片描述][20200228011216701.png] 配置并编译nginx 进入到nginx-1.8.1安装目录, 使用nginx的默认配置,添加nginx的rtmp模块。 add-module为下载的nginx-rtmp-module文件路径。 cd nginx-1.8.1 ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module make sudo make install 由于本人已经编译安装没问题 就不再重新执行上面命令了 不过需要注意的是我放包的路径 你也可以根据自己的实际情况指定路径 ![在这里插入图片描述][20200228011633324.png] 如果编译安装不出任何错误,在/usr/local/nginx/sbin下运行nginx看看是否可以正常访问网页 可执行文件和配置文件在这里,不要还以为是/etc/nginx ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70] 安装ffmpeg #安装epel包 yum install -y epel-release #导入签名 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 #导入签名 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-1.el7.nux.noarch.rpm #更新软件包 yum update -y #安装ffmpeg yum install -y ffmpeg #检查版本 ffmpeg -version 现在修改配置文件搭建我们的流媒体nginx服务器 修改/usr/local/nginx/sbin/nginx.conf文件 在这之前我们先在服务器上上传一个视频文件然后在opt下建立几个文件夹然后将上传的测试视频文件放在vod目录下 mkdir -pv /opt/video/{hls,vod} 使用tree查看目录结构 当然你也可以随便 不过要和配置文件中的对应 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 1] #在/usr/local/nginx/sbin/nginx.conf配置文件中加入已下内容 # vim /usr/local/nginx/sbin/nginx.conf worker_processes 1; events { worker_connections 1024; } rtmp { server { listen 1935; chunk_size 4096; application vod { play /opt/video/vod; } application live{ #第一处添加的直播字段 live on; } #hls配置 application hls { live on; hls on; hls_path /opt/video/hls; } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location /stat { #第二处添加的location字段。 rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { #第二处添加的location字段。 root /usr/local/nginx/nginx-rtmp-module; } location / { root html; index index.html index.htm; } #配置hls location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /opt; add_header Cache-Control no-cache; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 然后重新加载nginx ![在这里插入图片描述][20200228014040394.png] 如果配置没问题不报错访问你的服务器会有如下界面(注意换成你自己的ip访问) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 2] 接下来使用ffmpeg推流测试 #/root/myvdo.mp4也有一个测试视频 #推流 ffmpeg -re -i /root/myvdo.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/live/stream 如果配置成功就会出现如下页面 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 3] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 4] 附加几种推流方法 我们所用的就是最后一种 也可以播放流转换的视频 这里不做演示了 UDP # push stream local ffmpeg -re -i h264.mp4 -vcodec copy -f h264 udp://127.0.0.1:1234 # play stream ffplay udp://127.0.0.1:1234 ffplay -f h264 udp://127.0.0.1:1234 RTP # push stream local ffmpeg -re -i h264.mp4 -vcodec copy -an -f rtp rtp://127.0.0.1:20000 RTMP # push stream local ffmpeg -re -i h264.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/live/stream # play stream ffplay rtmp://192.168.0.157:1935/live/stream [20200228011216701.png]: https://img-blog.csdnimg.cn/20200228011216701.png [20200228011633324.png]: https://img-blog.csdnimg.cn/20200228011633324.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20200228012838395.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20200228013439696.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy,size_16,color_FFFFFF,t_70 [20200228014040394.png]: https://img-blog.csdnimg.cn/20200228014040394.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 2]: https://img-blog.csdnimg.cn/2020022801421595.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20200228014738522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy_size_16_color_FFFFFF_t_70 4]: https://img-blog.csdnimg.cn/20200228014800107.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjk1NjQy,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...