每年培训输出1000+合格IT工程师
培训影响全国各大知名IT企业和部门

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

作者:徐礼文

centos 使用yum安装nginx后如何添加模块

1.确认你已经安装在用的nginx信息

nginx -V

2.下载和此版本相同的nginx源码包并解压

将当前目录切换的 /home

#切换的homme目录
cd /home
wget http://nginx.org/download/nginx-1.10.3.tar.gz
 
tar -xvzf nginx-1.10.3.tar.gz

3.更新一下依赖相关包

 yum -y install pcre*

4.这里以增加 nginx-rtmp-moudle为例,下载你要增加的模块

wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.10.tar.gz
 
mv v1.1.10.tar.gz nginx-rtmp-1.1.10.tar.gz
tar -zxvf nginx-rtmp-1.1.10.tar.gz

5.下面开始进入正题

#停掉nginx服务
service nginx stop

#进入解压的nginx-1.10.3目录
cd nginx-1.10.3

#编译./configure 后面加上 第1步nginx -V查看到的所有配置参数,后面加上你要加的模块配置
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx ...(太长我省略了) --add-module=/root/nginx-rtmp-module-1.1.10

make install  

验证新nginx是否可用验证编译后的nginx是否可以使用已有的配置
./objs/nginx -t

使用新nginx
备份 cp /usr/sbin/nginx /usr/sbin/nginx-bak
替换 cp ./objs/nginx /usr/sbin/nginx
 
ok了,重启nginx 
service nginx start
祝你成功!
#查看IP
ifconfig 
#在home下上传一个test.mp4视频
#推送rtmp流 下载一个VLC测试
ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac  -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://{IP}:1935/myapp/test1 
#推送hls流 写个HTML测试
ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://{IP}:1935/hls/test2
<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<video id="video"></video>
<script>
  if(Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://{IP}/hls/test2.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 }
</script>

三、配置nginx虚拟主机配置文件

1. 配置rtmp服务。

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
          application vod {
           play /vod;
          }
     }
}

2. 配置直播,以及hls支持。

    application sdchinalive{
        live on;
        hls on;
        wait_key on;
        hls_path /vod/hls;
        hls_fragment 10s;
        hls_playlist_length 10s;
        hls_continuous on;
        hls_cleanup on;
        hls_nested on;
    }

hls_path:切片保存位置

hls_fragment:每片切片的长度

hls_playlist_length:这个是回播的长度,可以理解成延迟,因为直播不可能是绝对的实时

hls_cleanup on:清理切片,即删除用完的切片

3. 配置直播录制,格式转换,以及回播。

需求是:直播完成后,需要录制视频,并自动处理,使视频可以在网站前端播放。

要注意:默认录制的视频格式为flv,而IOS不支持flv,所以要先转为mp4再发布到前端。

转换视频使用FFmpeg,需提前安装。

record all:保存视频

record_path /vod/record:保存的视频位置

exec_record_done ffmpeg -y -i $path -codec copy -movflags +faststart /vod/record/$name.mp4:保存完成后转成mp4格式

4. 配置状态监控页面

在server标签中配置状态监控模块

location /stat {
    rtmp_stat all;
    rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
    root /usr/local/nginx/nginx-rtmp-module/;
}

stat.xsl文件在nginx-rtmp-module项目里面,路径可自己定义。配置之后,可通过IP或绑定的域名访问监控模块:ip/stat

四、客户端推送

直播推流端使用rtmp协议推流,端口为1935。推流软件推荐使用开源的OBS(Open Broadcaster Software)。

赞(1) 打赏
未经允许不得转载:徐礼文的技术博客 » centos7+nginx+rtmp+ffmpeg搭建流媒体服务器
分享到: 更多 (0)

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏