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

后面应该是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

第一篇博客中博主没有设置这个参数,所以我也没有设置,大概--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

可以看到还是用到了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

官方下载地址

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

只在http前面添加一小部分,及RTAM模块

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

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

cd /usr/local/nginx/sbin/
sudo ./nginx -s reload

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

ffmpeg -re -i ~/视频/日落与渔.MP4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:6000/videotest

💡 这里不指定端口的话默认是1935,与配置文件不符的话会报错,通常都需要指定一下

再打开一个终端进行拉流

ffplay rtmp://localhost:6000/videotest

成功播放

在这里插入图片描述

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

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

rtmp {
   
   server {
   
      listen 7788;

      chunk_size 6400;
 
      application videotest {
         
         live on;
   
      }
   }
}
  • chunk_size是数据块大小

打开7788端口的防火墙

在这里插入图片描述

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

ffmpeg -re -i ~/视频/日落与渔.MP4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://centos:7788/videotest

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

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

在这里插入图片描述

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20230627通过WPS给PPT幻灯片加入页码

20230627通过WPS给PPT幻灯片加入页码 2023/6/27 23:16 缘起:不想每次都手工给打印的PPT加页码,就通过百度搜索来自动加页码了! 真是偷懒让人进步呀! 百度搜索:ppt加页码怎么设置 方法步骤.png ?点击「插入」选项卡「幻…

两台电脑之间传输文件——就近共享

文章目录 背景步骤补充:跨设备共享 背景 两台电脑之间共享文件有很多种方式,这里介绍一种最简洁的——Windows自带的就近共享。它适合偶尔传输一些简单文件。比如把笔记本上的电子书传输到surface上阅读。 注意: 如果共享的电脑正在运行最新版本的Wind…

【数据结构与算法】7、队列(Queue)的实现【用栈实现队列】

目录 一、队列介绍二、使用 LinkedList 实现队列三、LeetCode:用【栈】实现队列(1) 老师讲之前我自己的实现(Correct)(2) 实现思路(3) 代码实现 四、jdk 的 Queue五、双端队列(Deque)六、循环队列(1) 分析(2) 入队(3) …

基于FPGA的RC滤波器设计实现

目录 简介: 传递函数 FPGA代码实现 总结 简介: RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测…

【JAVA】十分钟带你了解java的前世今生

个人主页:【😊个人主页】 系列专栏:【初始JAVA】 文章目录 前言JAVA介绍诞生🔬名字与图标🤖发展🛩️未来🪄 前言 玩过我的世界的朋友想必对JAVA以及它的图标都很熟悉,在游戏开始画面…

7.3 SpringBoot整合MyBatis分页插件github.pageHelper:实现图书列表API

文章目录 前言一、自己实现分页第一步,count 查询 总记录数(totalCount),计算总页数(totalPages)第二步,limit 查询 指定页数据 二、不考虑分页的查询图书列表MapperBookServiceImplBookListPar…

FastDFS单机部署及SpringBoot整合

前言 FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储、文件同步和文件访问(文件上传和文件下载),可以解决高容量和负载平衡问题。FastDFS应满足其服务基于文件的网站的要求,如照片共享网站和视…

Maynor的博客专家成长之路——暨2023年中复盘

文章目录 博客专家成长之路——暨2023年中复盘前言念念不忘的博客专家每天只做三件事敲代码写博客健健身 我的感悟 不足之处未来:和CSDN共同成长最后 博客专家成长之路——暨2023年中复盘 前言 ​ 2023年不知不觉已经过去了半年有余,也是时候作年中复盘…

ChatGPT 是什么?

写在前面:这篇文章是今年1月份对chatgpt做调研学习时写的,都是从别处搬来的,纯扫盲的作用。本来一直以草稿的形势存在,但今天整理博客,顺便给发出来吧。 文章目录 1. ChatGPT简介1.1 ChatGPT 支持的场景举例 2 ChatGPT…

计算机网络————应用层

文章目录 概述域名系统DNS域名结构域名服务器解析过程常见的DNS记录DNS报文格式基础结构部分问题部分资源记录(RR, Resource Record)部分 万维网WWWURLHTTPHTTP发展HTTP报文结构请求报文响应报文 cookie 内容分发网络CDN 概述 应用层的具体内容就是规定应用进程在通信时所遵循的…

python数据分析之利用多种机器学习方法实现文本分类、情感预测

大家好,我是带我去滑雪! 文本分类是一种机器学习和自然语言处理(NLP)任务,旨在将给定的文本数据分配到预定义的类别或标签中。其目标是为文本数据提供自动分类和标注,使得可以根据其内容或主题进行组织、排…

【AI】PyTorch安装记录及Anaconda环境配置

【AI】PyTorch安装记录及Anaconda环境配置 说下本地环境,RTX4070 12GB GPU;618刚买,不能让他闲着,配置一下炼丹环境,开始为打工人工作。为了方便后续部署模型之间依赖不冲突,所以使用Anaconda管理Python环…

网络环境TFTPNFS搭建

文章目录 1. TFTP服务搭建2. NFS 环境搭建 1. TFTP服务搭建 1、Ubuntu上搭建TFTP服务器,需要安装tftp-hpa和tftpd-hpa,命令如下: sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd2、TFTP也需要一个文件夹来存放文件…

Django DRF - 【Token】认证基本使用

一. 前言 Django Rest Framework Token是Django Rest Framework中的一个扩展,用于实现用户认证和授权。它为每个用户生成一个唯一的Token,并将其存储在数据库中。在用户进行API请求时,用户需要在请求的HTTP Header中包含Token,这…

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法,考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为,对考生的行为进行自动抓拍,并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…

关于Apache Dubbo反序列化漏洞(CVE-2023-23638)的预警提示与对应的Zookeeper版本

公司在升级dubbo过程中因zookeeper版本不匹配,导致服务注册和调用出现异常 一、漏洞详情 Apache Dubbo是一款高性能、轻量级的开源Java服务框架。 Apache官方发布安全公告,修复了Apache Dubbo中的一个反序列化漏洞(CVE-2023-23638&#xff…

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环,而GDB(GNU调试器)作为一款功能强大的调试工具,在开发者中得到广泛应用。除了传统的命令行调试功能外,GDB还提供了Python的GDB库,…

计算机网络——自顶向下方法(第一章学习记录)

什么是Internet? 可以从两个不同的方面来理解Internet。(它的构成。它的服务) 1.因特网的主要构成 处在因特网的边缘部分就是在因特网上的所有主机,这些主机又称为端系统(end system),端系统通过因特网服…

【C2】文件,时间,多线程,动静态库

文章目录 1.文件:fprint/fgets/fwrite/fread,ftell/rewind/fseek/fflush1.1 文本文件:FILE结构体1.2 二进制文件:没有行概念1.3 文件定位:linux下文本文件模式和二进制文件模式没有区别。fgets和fprintf以行方式读写文…

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册 一、前置环境配置二、执行Xmind2testcase的转换方法1.在控制台输入xmind2testcase [path/xmind文件路径] [-csv] [-xml] [-json],例:xmind2testcase /root/homin/XX测试点.xmind -csv ##在当前…