【浅学】Windows下ffmpeg+nginx+flv将本地视频推流在本地搭建的Web前端页面中播放,超详细步骤

Nginx安装和配置

下载nginx-1.19.3-http-flv 模块预编译包并解压放在d盘,路径就跟安装步骤里说的一样(如下图),不然会有其他问题出现。
在这里插入图片描述
打开conf/nginx.conf,查看RTMP和http相关的配置,确认端口号和路由名称
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ffpemg推流视频

ffmpeg安装

安装步骤参考FFmpeg 超级详细安装与配置教程(Windows 系统),安装包的位置不要有中文路径,建议把原来的巨长的文件夹名重命名简短一点,官网下载需要魔法不然很慢但下下来的时长可以接受,我上传的安装包被自动设成VIP资源了需要的话可以留邮箱。。

视频推流

安装配置好后在终端(CMD)中输入以下命令(同时按住win+R键左下角弹出输入框,然后输入cmd按回车就能打开终端)

ffmpeg -stream_loop -1 -i 你的视频文件的路径.mp4 -c:v libx264 -preset ultrafast -c:a aac -f flv rtmp://localhost/myapp/stream

这条命令的作用是把本地的 .mp4 文件进行无限循环播放,并将视频流以 H.264 编码、音频流以 AAC 编码,封装成 FLV 格式后推送到 rtmp://localhost/myapp/stream 这个 RTMP 地址。

ffmpeg命令解释

命令的基本格式如下

ffmpeg [全局选项] [输入文件选项] -i 输入文件 [输出文件选项] 输出文件或推流地址
  1. -stream_loop -1
    此为全局选项,用于指定输入文件的循环次数。-1 表示无限循环,也就是输入的视频文件会不断循环播放,直至手动停止推流。这个选项也可以不要
  2. -i 你的视频文件.mp4
    这是输入文件选项,-i 是指定输入文件的标志,你的视频文件.mp4 是要作为输入的本地视频文件名称,注意如果终端没有切到这个文件的所在的目录下要加上文件所在的完整路径(文件夹或者文件名一定不能有空格
  3. -c:v libx264
    属于输出文件选项,-c:v 用于指定视频编码器,libx264 是常用的 H.264 视频编码器,它能将视频流编码成 H.264 格式。
  4. -preset ultrafast
    同样是输出文件选项,-preset 用于设置编码速度和压缩比的平衡。ultrafast 是最快的预设,意味着编码速度快,但可能会牺牲一定的视频质量和压缩率。
  5. -c:a aac
    这是输出文件选项,-c:a 用于指定音频编码器,aac 是常用的音频编码格式,可将音频流编码成 AAC 格式。
  6. -f flv
    属于输出文件选项,-f 用于指定输出文件的格式,flv 是 Flash Video 格式,常用于 RTMP 推流。
  7. rtmp://localhost/myapp/stream
    这是推流地址,代表 RTMP 服务器的地址和流名称。localhost 是本地服务器地址,myapp 是应用名称,stream 是流名称。

终端没有报Error,持续显示以下信息即表示正常推流了
在这里插入图片描述

查看推流视频

通过VLC软件播放RTMP流

使用VLC播放器(没有这个软件可以点击去官网下载安装),点击媒体->打开网络串流输入你的推流地址然后点击播放,如果能正常播放你的视频则说明RTMP正常推流了
在这里插入图片描述

通过VLC软件播放FLV流

同上一步操作 “打开网络串流”,输入 FLV 流的地址http://localhost:8080/live?port=1935&app=myapp&stream=stream&schema=rtmp,然后点击 “播放” 按钮,注意这里的两个端口号分别对应第一步中Nginx中的配置,8080是http服务的端口号,1935是RTMP的的端口号,后面的app、stream、schema这三个参数与推流地址rtmp://localhost/myapp/stream对应匹配,如果前一步中RTMP能正常播放那么这一步也是能正常播放的

通过web的video标签播放

新建一个.txt文件,然后输入以下代码并保存。重名将.txt后缀改成.html,如果前一步中FLV流正常播放那么,双击这个html文件在浏览器打开就能看到视频播放

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>FLV Stream Player</title>
</head><body><video width="640" height="480" controls><source src="http://localhost:8080/live?stream=myapp/stream.flv" type="video/flv">Your browser does not support the video tag.</video>
</body></html>

当然还可以通过js脚本把以上推流步骤封装一键运行web项目,本篇纯小白向所以不展开赘述,有需要后续会单开一篇在web项目里脚本实现的基础demo

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

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

相关文章

Ubuntu-tomcat安装部署

https://blog.csdn.net/weixin_43877427/article/details/144697087 Linux下Tomcat安装与配置_tomcat linux安装及配置教程-CSDN博客 一、下载Tomcat 1、官网下载 进入后根据自己需要选择不同的版本&#xff0c;点击download 进入后&#xff0c;在下图标注的里边选择要下载…

希洛激活器策略思路

在复杂多变的外汇市场中&#xff0c;交易者常常寻求有效的工具来辅助决策。 希洛激活器作为一种综合性的技术指标&#xff0c;结合了江恩理论、CCI&#xff08;商品通道指数&#xff09;和MACD&#xff08;移动平均收敛发散指标&#xff09;&#xff0c;旨在为交易者提供更为全…

n8n工作流自动化平台的实操:本地化高级部署

一、本地高级部署 1.下载 docker pull docker.n8n.io/n8nio/n8n 2.运行 docker volume create n8n_data docker run -dit --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n -e N8N_SECURE_COOKIEfalse -e N8N_RUNNERS_ENABLEDtrue -e N8N_ENFORCE_SETTINGS_FIL…

vector和string的迭代器

1. 迭代器的本质 (1) 标准要求 C 标准要求 std::string 和 std::vector 的迭代器必须是 随机访问迭代器&#xff08;Random Access Iterator&#xff09;。 指针天然满足随机访问迭代器的所有操作&#xff08;如 、--、n、* 等&#xff09;&#xff0c;因此可以直接用指针实现…

PyCharm代理配置全攻略:系统设置+Python运行环境一键搞定

文章目录 1. 设置系统代理1.1 作用范围1.2 使用场景1.3 设置步骤 2. 设置 python 运行/调试代理2.1 作用范围2.2 使用场景2.3 设置步骤 Pycharm 工具作为一款强大的 IDE&#xff0c;其代理配置在实际开发中也是必不可少的&#xff0c;下面介绍下如何配置 Pycharm 的代理。 1. …

stm32 g031g8 flash擦除函数被坑

先记录一下在擦除的时候由于调用了这个FLASH_PageErase(FLASH_BANK_1, secpos); 导致擦除不成功&#xff0c;写入失败。 下面的擦除有问题// 使用 FLASH_PageErase 擦除该页while ((FLASH->SR & FLASH_SR_BSY1) ! 0); // 等待空闲FLASH_PageErase(FLASH_BANK_1, secpo…

深度学习与 PyTorch 基础

笔记 1 深度学习简介 1.1 深度学习概念 深度学习是机器学习的一类算法, 以人工神经网络为结构, 可以实现自动提取特征 深度学习核心思想是人工神经网络为结构, 自动提取特征 1.2 深度学习特点 自动提取特征 解释性差 大量数据和高性能计算能力 非线性转换(引入非线性因…

【Unity】XLua访问C#文件

创建NPC.cs&#xff1a; public class NPC { public string name; public int age; public void Say() { Debug.Log("Say:我是未被修改的"); } public static void Say() { Debug.Log("Static Say:我是未被修改的"); } public void Say2(int a) { Debug.Lo…

【第十六届蓝桥杯省赛】比赛心得与经验分享(PythonA 组)

文章目录 一、我的成绩二、我的备赛经历三、如何备赛&#xff08;个人观点&#xff09;1. 基础语法2. 数据结构3. 算法4. 数学 四、做题技巧与注意事项五、我的题解试题A 偏蓝 &#x1f3c6;100%试题B IPV6 &#x1f3c6;0%试题C 2025图形 &#x1f3c6;100%试题D 最大数字 &am…

基于Springboot+Mysql的校园博客系统(含LW+PPT+源码+系统演示视频+安装说明)

系统功能 管理员功能&#xff1a;首页、个人中心、博主管理、文章分类管理、文章信息管理、举报投诉管理、系统管理&#xff1b;博主功能&#xff1a;首页、个人中心、文章信息管理、举报投诉管理、我的收藏管理&#xff1b;前台首页功能&#xff1a;首页、文章信息、系统公告…

第三次作业(密码学)

#include <stdio.h> #include <stdlib.h> // 计算最大公约数 int gcd(int a, int b) { while (b ! 0) { int temp b; b a % b; a temp; } return a; } // 计算模幂运算 int mod_pow(int base, int exponent, int modulus) { …

3.0/Q1,Charls最新文章解读

文章题目&#xff1a;Association between outdoor artificial light at night and metabolic diseases in middle-aged to older adults-the CHARLS survey DOI&#xff1a;10.3389/fpubh.2025.1515597 中文标题&#xff1a;夜间户外人工光与中老年人代谢性疾病的关联-CHARLS调…

MATLAB 中zerophase函数——零相位响应

零相位响应&#xff08;Zero-Phase Response&#xff09;是指滤波器的幅度函数&#xff0c;但相位为零。滤波器的相位响应为零&#xff0c;意味着不同频率的信号通过滤波器后&#xff0c;其相位不发生任何变化&#xff0c;即信号的波形在时间轴上没有偏移。 零相位响应指的是当…

马克思最基本的哲学思想--改造世界以实现人的自由全面发展--deepseek

马克思的哲学思想可以概括为“改造世界以实现人的自由全面发展”&#xff0c;这句话看似简单&#xff0c;却包含了其哲学的核心逻辑。我们可以从三个层面展开分析&#xff1a; 1. “改造世界”——实践是哲学的终极使命 马克思在《关于费尔巴哈的提纲》中写道&#xff1a; “哲…

JAVA学习-练习试用Java实现“一个简单的文本摘要系统 :基于关键词提取或句子摘要”

问题&#xff1a; java语言编辑&#xff0c;实现一个简单的文本摘要系统 &#xff1a;基于关键词提取或句子摘要。 解答思路&#xff1a; 实现一个简单的文本摘要系统&#xff0c;我们可以采用基于关键词提取的方法。以下是一个简单的Java实现&#xff0c;使用TF-IDF&#xff0…

案例解析:基于量子计算的分子对接-QDOCK(Quantum Docking)

分子对接&#xff08;Moleculardocking&#xff09;在药物发现中具有重要意义&#xff0c;但对接的计算速度和准确率始终难以平衡&#xff0c;其巨大解搜索空间对传统计算机来说异常艰巨。 本文通过引入网格点匹配&#xff08;GPM, Grind point matching&#xff09;和特征原子…

【Mytais系列】Datasource模块:数据源连接

MyBatis 的 DataSource 模块是框架与数据库交互的核心基础设施&#xff0c;负责管理数据库连接的创建、分配、释放及池化&#xff0c;直接影响 SQL 执行效率和资源利用率。以下是其核心内容、功能及在 SQL 执行中的作用详解&#xff1a; 一、DataSource 模块的核心组件 组件 功…

React 组件prop添加类型

给函数的props做注解 import { useState } from reacttype Props { className:string,title?:string } // 自定义一个Button组件 function Button(props:Props){// 解构出classname\const {className} propsreturn <button className{className}>点击我</button&g…

MCP多智能体消息传递机制(Message Passing Between Agents)

目录 &#x1f680; MCP多智能体消息传递机制&#xff08;Message Passing Between Agents&#xff09; &#x1f31f; 为什么要引入消息传递机制&#xff1f; &#x1f3d7;️ 核心设计&#xff1a;Agent间消息传递模型 &#x1f6e0;️ 1. 定义标准消息格式 &#x1f6e…

高中数学联赛模拟试题精选学数学系列第4套几何题

△ A B C \triangle ABC △ABC 的外心为点 O O O, 外接圆为 Γ \Gamma Γ. 射线 A O AO AO, B O BO BO, C O CO CO 分别交 Γ \Gamma Γ 于点 D D D, E E E, F F F. X X X 是 △ A B C \triangle ABC △ABC 内部的一点. 射线 A X AX AX, B X BX BX, C X CX CX 分…