Nginx学习之配置RTMP模块搭建推流服务

写在开头

Nginx学习之配置RTMP模块搭建推流服务。小程序进级实时音录制录制及广播技术,开放 Wi-Fi、NFC(HCE) 等硬件连接成效。同期提供按需加载、自定义组件和愈来愈多访谈层级等新天性,增强了第三方平台的力量,以满意日益丰硕的事体要求。

为更加高效地连接客户与公司,小程序提供了实时音录制摄像及广播组件。切合类目要求的小程序自助开通后,可自行建造或应用云服务,达成单向、双向以至多向的音摄像作用,如在线授课、远程咨询、录像客服,以致四个人集会等。

2017-12-26Wechat小程序推送了如此一条新闻,文书档案,代码也是简简单单的一笔带过,客户须求自行建造或使用云服务,完毕单向、双向以至多向的音录像成效。近些日子仅扶植flv, rtmp 格式。

Nginx学习之配置RTMP模块搭建推流服务。本篇博客通过介绍使用nginx的rtmp模块来使nginx服务支撑rtmp契约,能够做到推流和广播的效果与利益。

付出景况

Linux (centos7),Nginx (openresty),nginx-rtmp-module

安装

由于事先曾经设置过了openresty,详见博文。这里大家只供给安装nginx-rtmp-module模块就可以。

Nginx学习之配置RTMP模块搭建推流服务。下载并解压模块:

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip  master.zip

Nginx学习之配置RTMP模块搭建推流服务。截止原本的Nginx服务:

nginx -s stop

Nginx学习之配置RTMP模块搭建推流服务。布署并编写制定:

./configure --add-module=/home/nginx-rtmp-module-master
make

复制Nginx:

## 路径根据自己软件路径自行配置
cp /home/openresty/build/nginx-1.11.2/objs/nginx /usr/local/openresty/nginx/sbin

配置rtmp服务:

rtmp {                #RTMP服务
    server {
       listen 1935;  #//服务端口
       chunk_size 4096;   #//数据传输块的大小
       application vod {
           play /opt/video; #//视频文件存放位置。
       }
       application live{ #直播
           live on;
       }
   }
}

反省并运转服务:

nginx -t
nginx

播放

上传多个摄像文件test.flv至/opt/video目录。

下载三个VLC media player,工具栏-媒体-展开网络串流-互联网,然后偶输入互联网U中华VL(rtmp://ip:port/vod/test.flv),点击播放。

图片 1

回看

实时重播录像服务器的安顿:

events {
    use epoll;# 选择epoll模型可以达到最佳的IO性能
    worker_connections  1024;
}

rtmp {                #RTMP服务
    server {
       listen 1935;  #//服务端口
       chunk_size 4096;   #//数据传输块的大小
       application vod {
           play /opt/video; #//视频文件存放位置。
       }
       application live{ #直播
           live on;
           hls on; #这个参数把直播服务器改造成实时回放服务器。
           wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。
           hls_path /opt/video/hls; #切片视频文件存放位置。
           hls_fragment  600s;     #设置HLS片段长度。
           hls_playlist_length 10m;  #设置HLS播放列表长度,这里设置的是10分钟。
           hls_continuous on; #连续模式。
           hls_cleanup on;    #对多余的切片进行删除。
           hls_nested on;     #嵌套模式。
       }
   }
}

HTTP服务:

server {
        listen       80;
        server_name  rtmp.52itstyle.com;

        location /stat {
          rtmp_stat all;
           rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /home/nginx-rtmp-module-master/;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /live {  #这里也是需要添加的字段。
            types {  
               application/vnd.apple.mpegurl m3u8;  
               video/mp2t ts;  
            }
            alias /opt/video/hls;
            expires -1;
            add_header Cache-Control no-cache; 
            add_header Access-Control-Allow-Origin *;
        }  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

微信推流

<live-pusher webviewId="push" url="rtmp://ip:port/live/itstyle" 
    mode="HD" 
    autopush ="true"
    bindstatechange="statechange" 
    beauty = "10"
    whiteness="10"
    style="width: 300px; height: 225px;" />

手提式有线电话机展开小程序页面,举行录制推流服务,稍后大家会在/opt/video/hls/itstyle 目录下开采存的ts文件和index.m3u8文书。

在乎 url中的itstyle能够随意定义,相当于三个屋家标记。

PC推流

PC 直播是在 PC(windows/mac卡塔 尔(英语:State of Qatar)上信Ryan装的推流软件 OBS(推荐卡塔 尔(英语:State of Qatar)或然 XSplit 向RTMP录制云的推流地址,推送经过压压编码现场活动、教学、投影只怕游戏等画面,同有的时候间观者得以通过和推流地址相呼应的广播地址收看实时画面。

图片 2

PC 直播流程极其轻易,首要步骤:

  • 由此RTMP自定义一个推流地址,消逝往哪推流的标题;
  • 接纳第三方的推流软件,设置推流音录制源以致编码参数,解决推什么内容的主题素材;
  • 观众就足以行使大家提供的 RTMP DEMO 通过设置播放地址就能够开展察看,清除内容触达到粉丝这里的主题素材。

图片 3

推荐介绍阅读:其三方推流工具使用指南

Web播放

xiaozhibo.html:

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no">
        <title>小直播</title>
        <meta name="keywords" content="">
        <meta name="description" content="小直播——直播分享">
        <meta name="format-detection" content="telephone=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="msapplication-tap-highlight" content="no">
        <script src="//imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.2.1.js" charset="utf-8"></script>
    </head>
    <body>
        <div id="id_test_video" style="width:100%; height:auto;"></div>
        <script type="text/javascript">
           var player =  new TcPlayer('id_test_video', {
                "m3u8": "http://rtmp.52itstyle.com/live/itstyle002/index.m3u8",
                "autoplay" : true,//iOS下safari浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的
                "coverpic" : "https://blog.52itstyle.com/usr/uploads/2017/12/2652725976.jpg",
                "width" :  '480',//视频的显示宽度,请尽量使用视频分辨率宽度
                "height" : '320'//视频的显示高度,请尽量使用视频分辨率高度
            });
        </script>
    </body>
</html>

跨域难题crossdomain.xml放置在网站根目录:

<cross-domain-policy>
  <allow-access-from domain="*.qq.com" secure="false"/>
</cross-domain-policy>

测量试验访问地址:

参照文书档案:

作者: 小柒

出处: https://blog.52itstyle.com

分享是兴奋的,也见证了个人成长历程,随笔大都都是干活经历计算以至常常上学积攒,基于自身认识白玉微瑕在所无免,也请大家指正,协作进步。

本文由威尼斯游戏网站发布于威尼斯游戏网站,转载请注明出处:Nginx学习之配置RTMP模块搭建推流服务

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。