• 用FFmpeg+nginx+rtmp搭建环境实现推流


    Windows:

    1、下载文件:

    链接:https://pan.baidu.com/s/1c2LmIHHw-dwLOlRN6iTIMg
    提取码:g7sj
    2、解压文件:

      解压到nginx-1.7.11.3-Gryphon

    3、进入windows的cmd; 

    > cd nginx-1.7.11.3-Gryphon    //进入nginx的目录

    > nginx.exe -c conf ginx-win-rtmp.conf   //运行rtmp配置文件 

         注意:此时命令行会一直处于执行中 不用理会  也不要关闭

    测试:浏览器输入localhost:80  ,查看是否配置nginx启动成功!
    4、推流:

    ffmpeg -re -i 123.mp4 -vcodec libx264 -acodec aac -f flv rtmp://你的ip地址:1935/live/home

    5、拉流:

    电脑打开vlc播放器    输入地址:rtmp://你的ip地址:1935/live/home  

     Linux:

    1、安装工具:

       #gcc gcc-c++ perl 编译软件包用

       yum install -y net-tools wget unzip gcc gcc-c++ perl

    2、安装nginx及rtmp:

    #切换的homme目录
    cd /home

    下载并解压pcre

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

    下载并解压zlib

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

    下载并安装openssl

    复制代码
    #下载openssl包 
    wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1i.tar.gz 
    #解压openssl包 
    tar -zxvf openssl-1.0.1i.tar.gz 
    #切换到openssl里 
    cd openssl-1.0.1i 
    #生成配置文件 默认配置 
    ./config
    #编译程序 
    make 
    #安装程序 
    make install
    复制代码

    下载并解压nginx-rtmp-model

    复制代码
    #下载rtmp包
    wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
    #解压下载包
    unzip -o master.zip
    #修改文件夹名
    mv master nginx-rtmp-module
    复制代码

    安装nginx

    nginx wget http://nginx.org/download/nginx-1.12.2.tar.gz 
    #解压
    nignx tar -zxvf nginx-1.12.2.tar.gz 
    #切换到nginx中 
    cd nginx-1.12.2 
    #生成配置文件,将上述下载的文件配置到configure中 
    ./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 
    #编译程序 
    make 
    #安装程序 
    make install 
    #创建全局命令
    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    #查看nginx模块 nginx -V
    复制代码

    安装FFmpeg:
    安装ffmpeg时需要提前安装yasm插件:
    cd /home wget http:
    //www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -xvf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ./configure && make && make install
    开始安装ffmpeg:
    cd /home wget http:
    //www.ffmpeg.org/releases/ffmpeg-3.4.tar.gz tar -xvf ffmpeg-3.4.tar.gz cd ffmpeg-3.4/ ./configure && make && make install

    编译成功后测试:
    ffmpeg --help

    修改nginx配置:

    新建配置文件:
    vi /usr/local/nginx/conf/nginx-rtmp.conf
    输入内容:
    #user nobody;
    worker_processes 1;
    #
    ##error_log logs/error.log;
    ##error_log logs/error.log notice;
    ##error_log logs/error.log info;
    #
    ##pid logs/nginx.pid;
    #
    #
    events {
    worker_connections 1024;
    }
    #RTMP閰嶇疆
    rtmp{
    server{
    listen 1935;
    application myapp{
    live on;
    }
    application hls{
    live on;
    hls on;
    hls_path /tmp/hls;
    }
    }
    }
    #
    http {
    include mime.types;
    default_type application/octet-stream;
    #
    ##log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    ## '$status $body_bytes_sent "$http_referer" '
    ## '"$http_user_agent" "$http_x_forwarded_for"';
    #
    access_log logs/access.log;
    #
    sendfile on;
    ##tcp_nopush on;
    #
    ##keepalive_timeout 0;
    keepalive_timeout 65;
    #
    gzip on;
    #include /usr/local/nginx/conf.d/*.conf;
    server {
    listen 80;
    server_name localhost;
    #
    ##charset koi8-r;
    #
    ##access_log logs/host.access.log main;
    #
    location / {
    root html;
    index index.html index.htm;
    }
    location /hls {
    types{
    application/vnd.apple.mpegurl m3u8;
    video/mp2t ts;
    }
    root /tmp;
    add_header Cache-Control no-cache;
    }
    ##error_page 404 /404.html;
    #
    ## redirect server error pages to the static page /50x.html
    ##
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }
    }
    #
    ## proxy the PHP scripts to Apache listening on 127.0.0.1:80
    ##
    ##location ~ .php$ {
    ## proxy_pass http://127.0.0.1;
    ##}
    #
    ## pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    ##
    ##location ~ .php$ {
    ## root html;
    ## fastcgi_pass 127.0.0.1:9000;
    ## fastcgi_index index.php;
    ## fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    ## include fastcgi_params;
    ##}
    #
    ## deny access to .htaccess files, if Apache's document root
    ## concurs with nginx's one
    ##
    ##location ~ /.ht {
    ## deny all;
    ##}
    #
    #
    ## another virtual host using mix of IP-, name-, and port-based configurati
    ##error_page 404 /404.html;
    #
    ## redirect server error pages to the static page /50x.html
    ##
    

      

    执行nginx

    /usr/local/nginx/sbin/nginx

    关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld

    测试功能

    ffmpeg -re -i 123.mp4 -vcodec copy -codec copy -f flv rtmp://你的ip/hls/cctv

    测试访问

    视频切片保存位置:/tmp/hls/
    m3u8视频访问地址:http://你的ip/hls/cctv.m3u8

     重启nginx

    /usr/local/nginx/sbin/nginx -s reload
  • 相关阅读:
    TSQL Challenge 1
    CTE的使用
    编号问题
    C语言结构体(sizeof长度)偏移量的简单研究
    【更新中】树的遍历
    【更新中】C语言语法汇总(仅记录遇到的坑)
    windows修改PowerShell(命令提示符)默认中文编码方式
    “人工智能”并不可怕
    学习《操作系统》收获
    人类大脑只开发了10%? I don't think so.
  • 原文地址:https://www.cnblogs.com/liangblog/p/11122237.html
Copyright © 2020-2023  润新知