搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master/README.CN.md

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

1.安装前需要的工具

  1. #net-tool 查本地IP
  2. #wget 下载安装包
  3. #unzip 解压zip包
  4. #gcc gcc-c++ perl 编译软件包用
  5. yum install -y net-tools wget unzip gcc gcc-c++ perl

2. 将将Centos的yum源更换为国内的阿里云源

  1. #备份yum源
  2. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  3. #下载阿里源
  4. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  5. #清空缓存
  6. yum makecache

3. 安装nginx及rtmp

将当前目录切换的 /home

  1. #切换的homme目录
  2. cd /home

1. 下载并解压pcre

  1. #下载pcre包
  2. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
  3. #解压pcre包
  4. tar -zxvf pcre-8.41.tar.gz

2. 下载并解压zlib

  1. #下载zlib包
  2. wget http://www.zlib.net/zlib-1.2.11.tar.gz
  3. #解压zlib包
  4. tar -zxvf zlib-1.2.11.tar.gz

3.下载并安装openssl

  1. #下载openssl包
  2. wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1i.tar.gz
  3. #解压openssl包
  4. tar -zxvf openssl-1.0.1i.tar.gz
  5. #切换到openssl里
  6. cd openssl-1.0.1i
  7. #生成配置文件 默认配置
  8. ./configure
  9. #编译程序
  10. make
  11. #安装程序
  12. make install

4. 下载并解压nginx-rtmp-model

  1. #下载rtmp包
  2. wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  3. #解压下载包
  4. unzip -o master.zip
  5. #修改文件夹名
  6. mv master nginx-rtmp-module

5.安装nginx

  1. #下载nginx
  2. wget http://nginx.org/download/nginx-1.12.2.tar.gz
  3. #解压nignx
  4. tar -zxvf nginx-1.12.2.tar.gz
  5. #切换到nginx中
  6. cd nginx-1.12.2
  7. #生成配置文件,将上述下载的文件配置到configure中
  8. ./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.41 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.0.1i --add-module=/home/nginx-rtmp-module
  9. #编译程序
  10. make
  11. #安装程序
  12. make install
  13. #查看nginx模块
  14. nginx -V

4. 安装ffmpeg

  1. #安装epel包
  2. yum install -y epel-release
  3. #导入签名
  4. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
  5. #导入签名
  6. rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  7. #升级软件包
  8. rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
  9. #更新软件包
  10. yum update -y
  11. #安装ffmpeg
  12. yum install -y ffmpeg
  13. #检查版本
  14. ffmpeg -version

5. 修改配置运行服务

1.修改nginx配置

  1. vi /usr/local/nginx/conf/nginx.conf

修改之后的配置

  1. #工作进程
  2. worker_processes 1;
  3. #事件配置
  4. events {
  5. worker_connections 1024;
  6. }
  7. #RTMP配置
  8. rtmp {
  9. server {
  10. #监听端口
  11. listen 1935;
  12. #
  13. application myapp {
  14. live on;
  15. }
  16. #hls配置
  17. application hls {
  18. live on;
  19. hls on;
  20. hls_path /tmp/hls;
  21. }
  22. }
  23. }
  24. http {
  25. include mime.types;
  26. default_type application/octet-stream;
  27. sendfile on;
  28. keepalive_timeout 65;
  29. gzip on;
  30. server {
  31. listen 80;
  32. server_name localhost;
  33. location / {
  34. root html;
  35. index index.html index.htm;
  36. }
  37. #配置hls
  38. location /hls {
  39. types {
  40. application/vnd.apple.mpegurl m3u8;
  41. video/mp2t ts;
  42. }
  43. root /tmp;
  44. add_header Cache-Control no-cache;
  45. }
  46. error_page 500 502 503 504 /50x.html;
  47. location = /50x.html {
  48. root html;
  49. }
  50. }
  51. }

2.执行nginx

  1. /usr/local/nginx/sbin/nginx

3. 打开防火墙

  1. /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

4.测试功能

  1. #查看IP
  2. ifconfig
  3. #在home下上传一个test.mp4视频
  4. #推送rtmp流 下载一个VLC测试
  5. 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
  6. #推送hls流 写个HTML测试
  7. 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
  1. <script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
  2. <video id="video"></video>
  3. <script>
  4. if(Hls.isSupported()) {
  5. var video = document.getElementById('video');
  6. var hls = new Hls();
  7. hls.loadSource('http://{IP}/hls/test2.m3u8');
  8. hls.attachMedia(video);
  9. hls.on(Hls.Events.MANIFEST_PARSED,function() {
  10. video.play();
  11. });
  12. }
  13. </script>

四、然后就开始推流啦

  配好后就用推流软件啦,我用的是OBS,按照OBS操作就可以 啦!

在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的。

秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写test等。

填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

五、看直播

  如果是mac直接浏览器可以访问http://xxx:81/hls/test.m3u8来观看直播,其中xxx为你的服务器IP地址,

  手机端直接访问文件也可以看!

  然后其他的H5的vadio需要下载支持m3u8格式的播放啦,我是在https://github.com/huangyaoxin/hLive这下的,挺好用的!找了好多不行,这个可以!

六、看直播肯定会很卡  

如果降低延迟也不是没有方法,可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。

当然,我们也可以用rtmp拉流工具(VLC等)来看该直播,延迟大概在2-5S左右,拉流地址与推流地址一致。

centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)的更多相关文章

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

    1.安装前需要的工具 #net-tool 查本地IP #wget 下载安装包 #unzip 解压zip包 #gcc gcc-c++ perl 编译软件包用 yum install -y net-too ...

  2. (转)Nginx+rtmp+ffmpeg搭建流媒体服务器

    (1)下载第三方扩展模块nginx-rtmp-module # mkdir module && cd module //创建一个存放模块的目录 # wget https://githu ...

  3. Linux-Nginx+rtmp+ffmpeg搭建流媒体服务器

    Nginx+rtmp+ffmpeg搭建流媒体服务器 说明: nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块 具体操作步骤: 安装nginx (1)下载第三方扩展模块ngin ...

  4. 使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参考: 1,使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)http://blog.csdn.net/xdwyyan/article/details/4319 ...

  5. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

  6. 流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

  7. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器[转]

    转 :http://redstarofsleep.iteye.com/blog/2123752 Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个n ...

  8. Nginx+rtmp+ffmpeg 搭建推流服务器

    1. 安装nginx服务器 1.1 clone $ brew tap denji/homebrew-nginx 1.2 安装 $ brew install nginx-full --with-rtmp ...

  9. Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势

    之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...

随机推荐

  1. mongoose中connect()、createConnection()和connection的区别和作用

    转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...

  2. WebApi 全局使用filter

    先上代码: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // ...

  3. mysql查询出相同数据出现的次数,统计相同值的数量

    1.可以使用count SELECT count(name='A' OR NULL) FROM table 2.用sum SELECT sum(if( = 'A', 1, 0)) FROM table ...

  4. mysql5.5大数据量下表结构升级

    升级一张4万多行(增加一个字段),且包含blob字段的表(blob字段包含100KB左右的数据),运行alter语句:ALTER TABLE `imgdetail` ADD COLUMN  `uplo ...

  5. 封装一个函数,在ThinkPHP中一定程度上取代success和error

    1.下载jq2.下载layer3.根据自己的项目配置,将上述2文件放到样式目录中4.在Application/Common/function.php中添加如下代码function msg($msg,$ ...

  6. nginx请求数据超长的问题解决

    参考文章 https://www.cnblogs.com/onmyway20xx/p/4469202.html http://blog.51cto.com/iyull/2129220

  7. python操作redis集群

    strictRedis对象方法用于连接redis 指定主机地址,port与服务器连接,默认db是0,redis默认数据库有16个,在配置文件中指定database 16 上代码 .对redis的单实例 ...

  8. 获取进程ID,父进程ID,进程完整路径

    准备写一个进程管理的功能模块,今天下午先写了扫描获取本机各个进程路径,获取各个进程映像名称,进程完整路径. 要获取进程信息,第一步想到的就是提权,提权代码用过多次了,今天也小结了一下(http://w ...

  9. jsp弹窗并跳转

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  10. flask中如何生成迁移文件

    在flask网站开发中,如果直接对数据库进行修改的话,风险比较高,最好的是由迁移文件生成,这样确保了数据的误操作. 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移.并且集成到Fl ...