【媒体开发】利用FFMPEG进行推拉流

news2024/9/21 0:46:11

目录

1. 下载并启动媒体服务

2. 使用 FFMPEG 拉流并推送到指定服务地址

3. 客户端拉流


1. 下载并启动媒体服务

MediaMTX,也即之前的rtsp-simple-server,是一个即用型、零依赖的实时媒体服务器和媒体代理,允许发布、读取、代理和记录视频和音频流。

从Releases · bluenviron/mediamtx · GitHub找到最新版,下载对应平台的软件包,如 linux x86-64 选绿色框那个,windows x86-64 则选红色框那个:

解压后,运行即可:

# linux x86-64:
./mediamtx mediamtx.yml

2. 使用 FFMPEG 拉流并推送到指定服务地址

2.1 关于FFMPEG

ffmpeg是一个通用媒体转换器。它可以读取多种 输入 - 包括实时抓取/记录设备 - 过滤和转码它们 成多种输出格式。

ffmpeg从任意数量的输入“文件”读取。 (可以是常规的 文件、管道、网络流、抓取设备等),由 -i 选项,并写入任意数量的输出“文件”,这些文件是 由纯输出 url 指定。在命令行中找到的任何内容 不能将选项解释为被视为输出 url。

每个输入或输出 URL 原则上可以包含任意数量的流 不同类型(视频/音频/字幕/附件/数据)。允许的数量和/或 流的类型可能受到容器格式的限制。选择哪个 输入将进入的流,输出将自动完成 或使用 -map 选项(请参阅流选择章节)。

要引用选项中的输入文件,您必须使用它们的索引(从 0 开始)。例如。 第一个输入文件是 0,第二个是 1,依此类推。同样,流 文件内由它们的索引引用。例如。 2:3 指的是 第三个输入文件中的第四个流。另请参阅流说明符一章。

作为一般规则,选项将应用于下一个指定的 文件。因此,顺序很重要,你可以有相同的 多次在命令行上使用选项。每次出现都是 然后应用于下一个输入或输出文件。 此规则的例外是全局选项(例如详细级别), 应首先指定哪些内容。

不要混合输入和输出文件 - 首先指定所有输入文件,然后指定所有 输出文件。也不要混合属于不同文件的选项。全部 选项仅适用于下一个输入或输出文件,并在文件之间重置。

——官方文档介绍

安装:

对于Debian或者Ubuntu:

sudo apt-get update
sudo apt-get install ffmpeg

对于CentOS:

sudo yum install epel-release
sudo yum install ffmpeg

2.2 开始拉流、推流

启动媒体服务后,即可进行拉流并推送:

ffmpeg -re -i 视频文件路径或者网络摄像头地址 -c copy -f rtsp rtsp://127.0.0.1:8554/stream

如果想循环推某个视频,可以使用参数-stream_loop,可以指定循环多少次,如为-1,则循环无数次:

ffmpeg -re -stream_loop -1 -i 视频文件路径 -c copy -f rtsp rtsp://127.0.0.1:8554/stream

3. 客户端拉流

可直接用 ffplay 进行拉流与展示:

ffplay rtsp://127.0.0.1:8554/stream

也可用某些支持网络 URL 的播放器进行播放,如 VLC,SMPlayer 等;

也可以通过 opencv 拉流来获取每一帧图像进行各种处理:

video = cv2.VideoCapture("rtsp://127.0.0.1:8554/stream")

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

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

相关文章

react经验8:使用antd的checkbox实现全选与半选控制

预期实现的效果 列表项部分选中时,checkall处于半选状态,点击checkall要么全选,要么全不选。 实现步骤 列表项类型 declare type TableRow {key: Keytitle: stringisSelected?: boolean }示范数据 const [tabledata, setTabledata] u…

HarmonyOS4.0从零开始的开发教程16数据管理

HarmonyOS(十四)数据管理 1 概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外…

低功耗蓝牙模块常见天线输出方式及选型建议

随着互联网技术的飞速发展,物联网(IoT)已经渗透到了我们生活的方方面面。作为物联网的关键技术之一,BLE(低功耗蓝牙)技术在汽车电子、智能家居、穿戴设备、工业自动化等领域发挥着举足轻重的作用。深圳市信…

一入二出热电阻温度信号隔离变送器

一入二出热电阻温度信号隔离变送器 用于测量铂热电阻Pt10,Pt100,Pt1000,Cu50,Cu100的热电阻传感器的小型仪器设备。广泛应用于工业测量温度系统,是降低成本且有效的测量方式。 型号:JSD TARZ-1002系列 我们来看下有什么特点: ◆小体积&#x…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解,注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

今天最新早上好问候语,清晨阳光暖心的早安问候语录

1、花以芳香而美,人以真诚而贵。心以善良而德,缘以相识而聚。彼此保重,相约美好。每一个清晨,都是快乐的开始。早安吉祥! ​ 2、拿起手机想到你,我把祝福送给你,虽然天天在重复,证明…

算法 - 无重复字符的最长子串(03)

原理: 定义左右两个指针,保证两个指针对应的子串中没有重复的字符,寻找并记录最长的子串长度。如果窗口满足条件,右指针向右滑动扩大窗口,更新最优值;如果窗口不满足条件,左指针向右缩小窗口。…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

L1-041:寻找250

题目描述 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。 输出格式: 在一行中…

移植Modelsim仿真工程

背景 上班在公司用的PC1生成并完整的进行了仿真,打包成zip,经过微信传输并在家里的PC2上打开想要继续进行仿真,需要如何处理呢? 环境 软件路径公司PC1Quartus II Prime Pro 21.4C:\intelfpga_pro\21.4\quartus\bin64\qpro.exeMo…

Nginx与keepalived高可用节点搭建实验

本文主要介绍了nginxkeepalived的部署实验,并简单说明了nginx的集中负载分担模式 简介: nginx可以通过反向代理功能对后端服务器实现负载均衡功能 keepalived 是一种高可用集群选举软件 keepalived架构 分为三个模块: 1、keepalived core …

基于java的医院住院管理系统的设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱,出错率高,信息安全性差…

SpringIOC之FullyQualifiedAnnotationBeanNameGenerator

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

论文阅读:Lidar Annotation Is All You Need

目录 概要 Motivation 整体架构流程 技术细节 小结 概要 论文重点在探讨利用点云的地面分割任务作为标注,直接训练Camera的精细2D分割。在以往的地面分割任务中,利用Lidar来做地面分割是目前采用激光雷达方案进行自动驾驶的常见手段。来自Evocargo …

LeetCode Hot100 148.排序链表

题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 class Solution {public ListNode sortList(ListNode head) {return sortList(head, null);}private ListNode sortList(ListNode head, ListNode tail) {if (head null)retur…

超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)

测试函数为F9 在MATLAB中执行程序结果如下: 在Python中执行程序结果如下: 哈里斯鹰优化算法(Harris Hawks Optimization , HHO)是 Heidari等[1]于2019年提出的一种新型元启发式算法,设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突…

智能优化算法应用:基于原子搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于原子搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于原子搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子搜索算法4.实验参数设定5.算法结果6.…

【算法刷题】Day16

文章目录 1. 不同路径题干:算法原理:代码: 2. 二分查找题干:算法原理:1、暴力解法 O(n)2、二分查找算法 朴素二分模版:代码: 1. 不同路径 原题链接 题干: 机器人只能向下和向右走&a…

网络协议介绍

一、网络层 1.网络层功能 ①定义了基于IP协议的逻辑地址 ②连接不同的媒介设备 ③在网络中选择最佳路径转发数据 2.使用版本 使用的IP协议版本 ipv4 ipv6 首部长度:IP头部的长度 3.标识符 确定数据的分片是否来自于同一个文件。 4.标志 代表数据过小&…

C# WPF上位机开发(树形控件在地图软件中的应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们聊过图形软件的开发方法。实际上,对于绘制的图形,我们一般还会用树形控件管理一下。举个例子,一个地图…