• ffmpeg+nginx-rtmp转发视频流


    nginx与nginx-rtmp-module安装

    画了好几天图,实在有些乏力,找点有意思的事情做做

    觉得视频流传输挺有意思,B站找了些视频,但感觉有些大同小异,讲得不是很清楚

    FFmpeg/RTMP/webRTC丨90分钟搞定直播逻辑-推流-流媒体服务器-拉流

    流媒体服务器搭建RTMP-RTSP-WebRTC流媒体服务器

    也没看太明白,虽然不太需要了解底层原理吧,但感觉还是了解一些为好

    总之要在云服务器上安装nginxnginx-rtmp-module这两个东西,先装一下吧

    nginx-RTMP + ffmpeg实现远程图传

    实验室的博客写的有点简略,还是自己摸索吧

    主要参考了下面两篇博客,写得还是很详细的

    centos7 nginx rtmp转发流媒体服务器

    nginx源码编译安装(详解)

    在这里插入图片描述

    陆师兄编译的时候用了--with-openssl=/usr/local/nginx/src/openssl,帮助文档上

    --with-openssl=DIR                 set path to OpenSSL library sources
    
    • 1

    后面应该是OpenSSL库文件的路径,我之前二进制装的,因此找不到src文件,硬加编译会报错,提示找不到no such file or directory

    [lighthouse@VM-4-11-centos nginx-1.22.0]$ whereis openssl
    openssl: /usr/bin/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
    
    • 1
    • 2

    第一篇博客中博主没有设置这个参数,所以我也没有设置,大概--with了一些module

    安装完成后

    [lighthouse@VM-4-11-centos ~]$ whereis nginx
    nginx: /usr/local/nginx
    [lighthouse@VM-4-11-centos ~]$ cd /usr/local/nginx/sbin/
    [lighthouse@VM-4-11-centos sbin]$ ls
    nginx
    [lighthouse@VM-4-11-centos sbin]$ ./nginx -v
    nginx version: nginx/1.22.0
    [lighthouse@VM-4-11-centos sbin]$ ./nginx -V
    nginx version: nginx/1.22.0
    built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre --add-module=/usr/local/src/nginx-rtmp-module
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    可以看到还是用到了OpenSSL的,同时还给出了configure arguments

    查看下/usr/local/nginx/的目录结构

    [lighthouse@VM-4-11-centos nginx-1.22.0]$ cd /usr/local/nginx/
    [lighthouse@VM-4-11-centos nginx]$ ls
    conf  html  logs  sbin
    [lighthouse@VM-4-11-centos nginx]$ tree
    .
    ├── conf
    │   ├── fastcgi.conf
    │   ├── fastcgi.conf.default
    │   ├── fastcgi_params
    │   ├── fastcgi_params.default
    │   ├── koi-utf
    │   ├── koi-win
    │   ├── mime.types
    │   ├── mime.types.default
    │   ├── nginx.conf
    │   ├── nginx.conf.default
    │   ├── scgi_params
    │   ├── scgi_params.default
    │   ├── uwsgi_params
    │   ├── uwsgi_params.default
    │   └── win-utf
    ├── html
    │   ├── 50x.html
    │   └── index.html
    ├── logs
    └── sbin
        └── nginx
    
    4 directories, 18 files
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    官方下载地址

    https://github.com/arut/nginx-rtmp-module

    https://github.com/nginx/nginx

    官方的文档及教程

    Beginner’s Guide

    Linux本地推流-拉流

    在装了Ubuntu的笔记本上安装好必要的程序后,修改nginx的配置文件

    cd /usr/local/nginx/conf/
    sudo vim nginx.conf
    
    • 1
    • 2

    只在http前面添加一小部分,即RTMP模块

    rtmp {
        server {
           listen 6000;
           application videotest {
               live on;
           }
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 6000是负责推流和拉流的端口
    • live on表示视频流是实时的,而不是每次拉取都是从头开始

    然后打开一个终端,重新加载配置文件

    cd /usr/local/nginx/sbin/
    sudo ./nginx -s reload
    
    • 1
    • 2

    将一个视频放到你放的位置,打开终端进行推流

    ffmpeg -re -i ~/视频/日落与渔.MP4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:6000/videotest
    
    • 1
    • 这里不指定端口的话默认是1935,与配置文件不符的话会报错,通常都需要指定一下

    再打开一个终端进行拉流

    ffplay rtmp://localhost:6000/videotest
    
    • 1

    成功播放

    在这里插入图片描述

    将视频推流至服务器并在PC及移动端拉流

    同样在服务端安装好必要程序后,修改nginx的配置文件

    rtmp {
       
       server {
       
          listen 7788;
    
          chunk_size 6400;
     
          application videotest {
             
             live on;
       
          }
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • chunk_size是数据块大小

    打开7788端口的防火墙

    在这里插入图片描述

    同样在笔记本端进行视频推流

    ffmpeg -re -i ~/视频/日落与渔.MP4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://centos:7788/videotest
    
    • 1
    • centos是在/etc/hosts中设置好的域名

    在台式机上安装VLC软件,打开网络串流

    在这里插入图片描述

    输入 rtmp://1.116.137.21:7788/videotest,即可拉取播放

    在这里插入图片描述

    同样在手机端安装VLC软件,也可拉取播放

    在这里插入图片描述
    在这里插入图片描述

    参考博客

    视频直播| 搭建一个本地nginx服务器以及实现推流和拉流

    手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流

  • 相关阅读:
    在RockyLinux 9.3环境中采用RPM模式部署Oracle 19C
    通过IP地址可以做什么
    MySQL 开源到商业(二):开源骇客沦为大厂社畜
    java计算机毕业设计在线影院系统源码+系统+mysql数据库+lw文档+部署
    linux常见下载安装工具
    PS系统教学24
    Git 常用命令汇总
    【算法思想】排序
    ZYNQ linux调试LCD7789
    Analyzing and Leveraging Decoupled L1 Caches in GPUs
  • 原文地址:https://blog.csdn.net/qq_34935373/article/details/126003565