RTMP、FFmpeg安装测试

RTMP、FFmpeg安装测试

    • 1.使用 Docker 部署 RTMP 服务
      • 1.拉取带有 RTMP 模块的 NGINX 镜像:
      • 2.运行容器
    • 2. 防火墙放行
    • 3.windows安装ffmpeg
      • 1. [下载链接](https://ffmpeg.org//download.html)
      • 2.解压
      • 3.环境变量配置
    • 4.常用的 FFmpeg 推流和拉流命令
      • 1.推流命令
        • 1. 推流到 RTMP 服务器
        • 2. 推摄像头实时视频到 RTMP
        • 3. 推摄像头+麦克风到 RTMP
      • 2.拉流命令
        • 1. 拉取 RTMP 流并播放
        • 2. 拉取 RTMP 流并保存为文件
        • 3.拉取 HTTP/HLS 流
          • 1. 播放 HLS(HTTP Live Streaming)流
          • 2. 保存 HLS 流到文件
      • 3.其他常用推流命令
        • 1. 推流到 YouTube
        • 2. 推流到 Facebook Live
      • 4.常用参数说明
    • 5.测试推送
      • 1.打开cmd
      • 2.再打开一个cmd
    • 结果

1.使用 Docker 部署 RTMP 服务

1.拉取带有 RTMP 模块的 NGINX 镜像:

docker pull tiangolo/nginx-rtmp

2.运行容器

docker run -d -p 1935:1935 -p 8080:80 tiangolo/nginx-rtmp

注:此方式安装不会影响非docker下的NGINX

2. 防火墙放行

# 允许访问 8080 端口
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT# 允许访问 1935 端口
sudo iptables -A INPUT -p tcp --dport 1935 -j ACCEPT

3.windows安装ffmpeg

1. 下载链接

在这里插入图片描述

2.解压

用winRAR解压就行
在这里插入图片描述

3.环境变量配置

path 里面加ffmpeg 下面bin的路径(可有可无,只不过是当前文件夹下运行,还是所有文件下运行cmd而已)

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

4.常用的 FFmpeg 推流和拉流命令

1.推流命令

推流一般是将本地媒体文件或设备采集的数据推送到流媒体服务器(如 RTMP、HLS 等)。

1. 推流到 RTMP 服务器

将本地视频文件推送到 RTMP 服务器:

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://<server-ip>/live/stream

-re: 按原视频的帧率实时读取文件(适用于推流)。
-i input.mp4: 指定输入文件。
-c copy: 不重新编码,直接复制视频流和音频流。
-f flv: 输出格式为 FLV(RTMP 常用格式)。
rtmp:///live/stream: RTMP 服务器的地址。

2. 推摄像头实时视频到 RTMP

将本地摄像头视频流实时推送到 RTMP 服务器:

ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset veryfast -f flv rtmp://<server-ip>/live/stream

-f dshow: 指定视频采集设备(Windows 系统)。 video=“Integrated Camera”: 指定摄像头名称。
-vcodec libx264: 使用 H.264 视频编码。
-preset veryfast: 设置编码速度,veryfast 可以减少延迟。

3. 推摄像头+麦克风到 RTMP

同时推送摄像头和麦克风音视频到 RTMP 服务器:

ffmpeg -f dshow -i video="Integrated Camera":audio="Microphone" -vcodec libx264 -acodec aac -f flv rtmp://<server-ip>/live/stream

audio=“Microphone”: 指定音频设备(麦克风)。

2.拉流命令

拉流指从流媒体服务器获取数据并播放或存储。

1. 拉取 RTMP 流并播放

使用 FFplay 播放 RTMP 流:

ffplay rtmp://<server-ip>/live/stream
2. 拉取 RTMP 流并保存为文件

将 RTMP 流保存为本地视频文件:

ffmpeg -i rtmp://<server-ip>/live/stream -c copy output.mp4

-i: 指定输入流 URL。
-c copy: 直接复制视频和音频流,不重新编码。 output.mp4: 保存为 MP4 文件。

3.拉取 HTTP/HLS 流
1. 播放 HLS(HTTP Live Streaming)流

通过 FFplay 播放 HLS 流:

ffplay http://<server-ip>/hls/stream.m3u8
2. 保存 HLS 流到文件

将 HLS 流保存为本地文件:

ffmpeg -i http://<server-ip>/hls/stream.m3u8 -c copy output.ts

output.ts: 将 HLS 保存为 TS 文件。

3.其他常用推流命令

1. 推流到 YouTube

将视频流推送到 YouTube Live:

ffmpeg -re -i input.mp4 -c:v libx264 -b:v 3000k -c:a aac -strict -2 -f flv rtmp://a.rtmp.youtube.com/live2/<stream-key>

-b:v 3000k: 设置视频码率为 3000kbps。 : 替换为 YouTube 的推流密钥。

2. 推流到 Facebook Live
ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -maxrate 1500k -bufsize 3000k -f flv rtmp://live-api-s.facebook.com:80/rtmp/<stream-key>

4.常用参数说明

-re: 实时推流,按视频帧率发送数据。
-f flv: 输出格式为 FLV(RTMP 协议常用)。
-c:v libx264: 使用 H.264 编码器。
-c:a aac: 使用 AAC 音频编码。
-b:v 3000k: 视频码率。
-preset veryfast: 视频编码速度,ultrafast 到 veryslow,编码越慢质量越好。 这些命令覆盖了推流、拉流以及不同协议的基本操作,适用于各种流媒体服务器和平台。

5.测试推送

1.打开cmd

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://192.168.1.11/live/stream

以下是对各个参数的解释:

-re: 这个参数用于实时(real-time)读取输入文件。它让 FFmpeg 以与原始素材相同的速率发送数据,而不是尽快处理和发送。通常用于推流场景,以确保推流的速度不会超过实际播放速度。 (没有这个参数,FFmpeg
会尽可能快地处理输入文件,可能导致视频播放过快。)

-i input.mp4: 指定输入文件为 input.mp4。这个视频文件将作为推流源。

-c copy: 这个参数指示 FFmpeg 直接复制输入视频和音频的编解码数据,而不对其重新编码(即 “copy” 模式)。这样做可以节省时间和 CPU 资源,因为它不需要进行重新压缩和编码处理。

-f flv: 指定输出格式为 FLV(Flash Video),这是 RTMP 协议常用的封装格式。RTMP 协议最常用于流媒体传输,特别是在像 YouTube、Twitch 这样的直播平台上,FLV 格式是常用的推流格式。

rtmp://192.168.1.11/live/stream: 这是推流的目标 RTMP 服务器的 URL。

rtmp:// 是协议头,表示使用 RTMP 协议。
192.168.1.11 是服务器的 IP 地址。 /live/ 是流的应用名称,可以被服务器配置。 /stream 是具体流的名称,也就是推流的 ID。

2.再打开一个cmd

ffplay rtmp://192.168.1.11/live/stream

命令解释:
ffplay: FFplay 是 FFmpeg 中的播放器工具,用来播放视频和音频流。
rtmp://192.168.1.11/live/stream: 这是 RTMP 流的 URL,表示视频流源位于 RTMP 服务器的地址 192.168.1.11,在路径 /live/stream 下。

结果

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3629de0aa69c4a809c2fea5c8dd78b7e.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL实现给表添加数据及其触发器操作

新建一个表实现添加数据&#xff0c;数据不重复&#xff0c;。判断两个字段是否存在&#xff0c;如果存在&#xff0c;就修改对应字段&#xff0c;如果不存在就新增数据。 测试表格Test如下&#xff1a; 新建触发器如图&#xff1a; 触发程式如下&#xff1a; USE [Test] GO/*…

C语言_字符串+内存函数的介绍

字符函数和字符串函数 本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 字符串查找 strstr strtok 错误信息报告 strerror 字符操作内存操作函数 memcpy memmove memset memcmp 1. 字…

【含文档】基于Springboot+Vue的白云山景点门票销售管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

Mysql(七) --- 索引

文章目录 前言1.简介1.1.索引是什么&#xff1f;1.2.为什么使用索引? 2.索引应该使用什么数据结构&#xff1f;2.1.Hash2.2.二叉搜索树2.3.N叉树2.4.B树2.4.1. 简介2.4.2. B树的特点2.4.3. B树和B树的对比 3.Mysql中的页3.1.为什么要使用页3.2.页文件头和页文件尾3.3.页主体3.…

小新学习Docker之Docker--harbor私有仓库部署与管理

目录 一、Harbor简介 1.1、Harbor概述 1.2、Harbor的特性 1.3、Harbor的构成 二、Harbor构建Docker私有仓库 2.1、部署Harbor服务 2.2、启动 Harbor 2.3、查看 Harbor 启动镜像&#xff0c;检查harbor是否安装成功 2.4、创建一个新项目 2.5、非本地主机进行下载镜像 …

STM32学习--4-1 OLED显示屏

接线图 OLED.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))/*引脚初始化*/ void …

软件安全漏洞挖掘: 基础知识和概念

1. 软件漏洞原理和漏洞检测方法 文章目录 1. 软件漏洞原理和漏洞检测方法1. 漏洞披露2. 漏洞定义和分类1. 漏洞的定义2. 漏洞的分类3. 漏洞检测方法常见方法1. 程序切片2. 形式化方法1. 符号执行3. 污点分析污点分析步骤/流程*污点分析流程的详细介绍1. 识别source和sink点2. 污…

Pycharm通过ssh远程docker容器搭建开发环境

本地pycharm通过ssh方式远程连接服务器&#xff08;Ubuntu&#xff09;上的docker容器&#xff0c;搭建开发环境。实现功能&#xff1a;将环境依赖打包成docker镜像&#xff0c;并在远程服务器中启动容器&#xff08;启动时做好端口映射和文件夹挂载&#xff09;&#xff0c;通…

使用vscode导入库失败解决方法

导入库失败原因 在使用vscode写python代码时&#xff0c;有时会遇见导入库失败的情况&#xff0c;如下图&#xff1a;无法解析导入“xxxxx” 或者 运行时报错&#xff1a;ModuleNotFoundError: No module named xxxxx。 原因可能有&#xff1a; 根本没有下载库&#xff1b…

Luminar Neo v1.21.0.13934 图像编辑软件绿色便携版

skylum Luminar Neo 是一款由未来 AI 技术驱动的创意图像编辑器。并且支持微软Windows及苹果Mac OX系统&#xff0c;它使创作者能够将他们最大胆的想法变为现实并乐在其中。借助 Luminar Neo 领先的 AI 技术和灵活的工作流程&#xff0c;完成创意任务并获得专业品质的编辑结果。…

java基础(5)继承与多态

目录 ​编辑 1.前言 2.正文 2.1继承 2.1.1继承概念 2.1.2继承语法 2.1.3子类访问父类 2.1.4super关键字 2.2多态 2.2.1多态概念 2.2.2多态条件 2.2.3重写 2.2.4向上转型与向下转型 2.2.5为什么要使用多态 3.小结 1.前言 哈喽大家好啊&#xff0c;今天继续来为大…

C++ operator new和operator delete的深入讲解

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 前言 关于operator new和operator delete我们需要明确一个概念&#xff0c;这两个都是…

15.5 JDBC数据库编程5——DAO

目录 15.1.1 引言 实体类Product.java 异常类DaoException.java Dao.java ProductDao.java ProductDaoImpl.java ProductDaoTest.java 15.1.1 引言 Java是面向对象编程语言&#xff0c;主要操作对象&#xff0c;而关系数据库的数据并不是对象&#xff0c;Java程序插入…

linux线程 | 线程的控制(下)

前言&#xff1a; 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以&#xff0c; 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…

动态内存管理(C语言 VS C++)

目录 一.动态内存管理的前置知识 1.栈区 a.栈区的特点 b.注意事项 2.堆区 a.堆区的特点 b.注意事项 3.全局/静态区 a.作用域和生命周期 b.注意事项 4.常量区 二.C语言动态内存管理 1.malloc 函数 a.接口简介与使用实例 b.注意要点 2.calloc 函数&#xff1a; 3.…

Flink Web UI 是使用和调试保姆级教程(持续更新)

Flink Web UI 是调试和监控 Flink 应用程序的重要工具&#xff0c;通过它&#xff0c;你可以实时查看正在运行的 Flink 任务的详细信息&#xff0c;包括作业的状态、性能指标、各子任务的运行情况、故障恢复情况等。Flink Web UI 的这些功能为开发者和运维人员提供了调试和优化…

软考系统分析师知识点十三:软件需求工程

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间为&#xff1a;11月9日。 倒计时&#xff1a;24天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第一阶段&#xff1a;扫平基础知识点&#xff0c;仅抽取有用信息&am…

FPGA采集adc,IP核用法,AD驱动(上半部分)

未完结&#xff0c;明天补全 IP核&#xff1a;集成的一个现有的模块 串口写好后基本不会再修改串口模块内部的一些逻辑&#xff0c;将串口.v文件添加进来&#xff0c;之后通过他的上层的接口去对他进行使用&#xff0c;所以我们打包IP&#xff0c;之后就不用去添加源文件了&a…

仿 Mac 个人网站开发 |项目复盘

一、前言 1.1 灵感来源 早年有幸看到国外大佬做的一个 基于 Web 的 Windows XP 桌面娱乐系统, 那时刚好有搭建一个个人博客的想法, 所以就想是否可以基于 WEB 实现一个仿 Mac UI 的个人博客, 以应用的形式来展示博客各个功能! 1.2 相关链接(求个 Star) 前端开源代码后端开源…

Linux之实战命令32:chroot应用实例(六十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…