使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理

news2024/11/17 5:31:41

下载安装

FFmpeg下载官网:FFmpeg ,这里提供了官网下载的windows环境 4.1.3版本:https://download.csdn.net/download/qq_43474959/12311422

下载后,配置环境变量,将bin文件地址加入到path中:

 

测试

在cmd中键入ffmpeg,观察是否显示相关信息

​语法规则

语法结构:ffmpeg 输入配置 -i 输入地址 输出配置 输出地址

推流

本地视频推流

ffmpeg -re -i 本地视频.格式 -f flv 推流地址

例如: ffmpeg -re -i fight.mp4 -f flv rtmp://192...........

本地摄像头推流

1.寻找可用摄像头

ffmpeg -list_devices true -f dshow -i dummy

此时列出了可用摄像头名称

2.测试摄像头

ffplay -f dshow -i video="摄像头名称" 此处的摄像头名称是由上条命令执行后查询得到的

例如:ffmpeg -f dshow -i video="USB Camera"

3.摄像头推流

ffmpeg -f dshow -i video="摄像头名称" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv 推流地址

实测低延迟低丢帧摄像头推流

ffmpeg -f dshow -i video="摄像头名称" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

-framerate 25 :推流帧率

-preset:v ultrafast -tune:v zerolatency -acodec libfaac :最快推流配置

拉流

拉流播放视频

ffplay -i "拉流地址" -fflags nobuffer

nobuffer为实时播放

拉流保存视频

ffmpeg -i "拉流地址" "输出地址" ,如ffmpeg -i "https://xxx" "out.mp4

##更改拉流视频的分辨率

以320:240分辨率为例

ffplay -i "拉流地址" -vf scale=320:240

视频截取

是 ffmpeg -i "输入视频" -fflags nobuffer -t 60 -ss 0 "输出地址",代表截取输入视频从0秒到60秒的片段,保存到输出地址。

-ss n : 起始时间为第n秒

-t n : 总共截取的片段时长为n秒

定时截图(不断截图后更新一张图片)

ffmpeg -i “视频地址” -fflags nobuffer -update 1 -y -t 200 -ss 1 -r 1 -f image2 图片输出地址

-ss n : n秒后开始截图

-r n : 每秒截n帧

-t n : 截n秒

其他:-q:v :图片质量 -vframes:指定抽取的帧数

定时截图(每次截图产生产生一张图片,全部保存)

ffmpeg -i “视频地址” -r 1 -t 200 -ss 1 -f image2 输出地址和名称%d.jpg

例如:ffmpeg -i fight.mp4 -r 1 -t 200 -ss 1 -f image2 out%d.jpg

运行后会生成截图: out1.jpg out2.jpg out3.jpg …

格式转换

直接输入源文件,修改后缀作为输出文件即可,例如MP4转gif:

ffmpeg -i test.mp4 test.gif

视频处理

视频变速

视频转为两倍速:

ffmpeg -i input.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4

更改速度:将0.5修改为想要的倍数的倒数

改变视频帧率

通过输出配置-r设置,例如将输入视频转换为10帧率的输出视频

ffmpeg -i input.mp4 -r 10 output.mp4

视频剪辑

例如,从第30秒开始,截一分钟:

ffmpeg -ss 00:00:30 -t 60 -i src.mp4 -codec copy out.mp4

视频旋转

上下翻转 ffmpeg -i input.mp4 -vf vflip out.mp4

左右翻转 ffmpeg -i input.mp4 -vf hflip out.mp4

顺时针90° ffmpeg -i input.mp4 -vf transpose=1 out.mp4

逆时针90° ffmpeg -i input.mp4 -vf transpose=2 out.mp4

视频尺寸裁剪

ffmpeg -i input.mp4 -vf crop=1280:720:0:120 out.mp4

crop后的参数,宽:高:起始x:起始y

常见问题:

1.推流时遇到红色丢帧警告 real-time buffer [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped!

原因:编码太慢或者编码缓存区过小,解决方法:

降低推流质量,减小待推流视频的分辨率、帧率等,以上述的

 
 

ffmpeg -f dshow -i video="摄像头名称" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

为例,此处加入设置分辨率选项:

 
 

ffmpeg -f dshow -i video="摄像头名称" -s 300*300 -framerate 15 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

-s x*y 通过此句设置推流分辨率,或通过-framerate n 设置推流帧率

在推流时清理内存、减少cpu利用率,或更换计算能力更强、内存更大的设备

作者:FarryNiu

原文链接:https://blog.csdn.net/qq_43474959/article/details/105366800

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

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

相关文章

数据结构 | 图结构 | 最小生成树 | Kruskal Prim算法讲解

文章目录前言Kruskal算法Prim算法前言 讲解之前,我们需要先明白连通图是指什么?连通图具有以一个顶点为起点可以到达该图中的任意一个顶点的特性,就算它们不直接相连,但是它们之间至少有一条可以递达的路径。并且连通图是针对无向…

Mysql 中的日期时间函数汇总

日期和时间函数MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下MySQL中内置的日期和时间函数。1 CURDATE()函数CURDATE()函数用于返回当前日期,只包含年、月、日部分,格式为YYYY-MM-D…

【Unity3D小工具】Unity3D中实现仿真时钟、表盘、仿原神时钟

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 今天实现一个时钟工具,其实在之前已经完成了一个简…

P3366 【模板】最小生成树

题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 �,�N,M,表示该图共有 �N 个结点和 �M 条无向边。 接下来 &…

【K8S系列】Pod重启策略及重启可能原因

目录 1 重启策略 1.1 Always 1.2 OnFailure 1.3 Nerver 1.4 yaml示例 2 Pod常见异常状态 2.1 Pending状态 2.2 Waiting/ContainerCreating状态 2.3 CrashLoopBackOff状态 2.4 ImagePullBackOff状态 2.5 Error状态 2.6 其他状态说明 tips: 3.自动重启的可能原…

【HBase——陌陌海量存储案例】5. Apache Phoenix快速入门

6.3 快速入门 6.3.1 需求 本次的小DEMO,我们沿用之前的订单数据集。我们将使用Phoenix来创建表,并进行数据增删改查操作。 列名说明id订单IDstatus订单状态money支付金额pay_way支付方式IDuser_id用户IDoperation_time操作时间category商品分类 6.3.…

Ruoyi-Cloud框架学习-【06 新增业务项目】

新建模块 结构查看 新增子模块,按照若依赖的约定,避免后续出现问题,当然一通百通,也可以按照自己的思路配置,修改对应的配置即可。 后端项目结构如下,通过观察,我们需要新增自己的模块在ruoy…

git reset

reset三种模式区别和使用场景区别:--hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。--soft:重置位置的同时,保…

Java后端项目排错经验分享

导致错误的原因有很多,最常见的无非也就那么几种: 1、粗心导致的格式问题以及代码多写少写错写字母的问题 2、代码逻辑问题 3、框架版本不匹配问题 无论是哪种问题,排查错误的方式最好最便捷的方式有调试日志,那么如果是线上问…

【头歌】循环队列及链队列的基本操作

第1关:循环队列的基本操作任务描述本关任务是实现循环队列的基本操作函数,以实现判断队列是否为满、是否为空、求队列元素个数、进队和出队等功能。相关知识队列的基本概念队列(简称队)也是一种运算受限的线性表,在这种…

Kubernetes集群搭建 (未完待续)

Kubernetes集群搭建 目录 前言前期准备K8S集群安装 虚拟机设置安装K8S集群k8s部署Nginx 附录1 Docker安装附录2 yum k8s 问题附录3 k8s start问题附录4 k8s master init 前言 本文指定Docker与K8s版本,保证兼容性,可供参考 Docker‐ce‐3:19.03.9‐3…

推荐7个高质量图片素材网站

这期给大家分享7个免费、高质量图片素材网站,而且无版权,不用担心侵权!建议收藏。 1、潮点视频 https://shipin520.com/shipin-tp/0-1329-0-0-0-0-0-0-0-1.html?from_code2510 网站主要以提供高质量视频素材为主,但也有大量的配…

基于FPGA的啸叫检测与抑制系统设计与实现verilog

针对啸叫的问题,本文设计了一种基于移频算法的啸叫抑制器。采用高性能音频编解码芯片对音频信号采样,移频器对采样所得的音频信号进行移频,移频频率范围为0~8Hz,再用音频芯片输出,采用FFT算法计算出啸叫点频率值,显示在LCD1602上,此移频器可达到快速有效的啸叫抑制效果。…

【JVM】垃圾回收之对象已死

文章目录1. 概述2. 引用计数算法3. 可达性分析算法4. 引用的分类4.1 软引用的应用本文参考:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 1. 概述 总所周知,垃圾收集器的任务就是将“死去”的对象回收。 那么&a…

自动驾驶感知——毫米波雷达

文章目录1. 雷达的基本概念1.1 毫米波雷达分类1.2 信息的传输1.3 毫米波雷达的信号频段1.4 毫米波雷达工作原理1.4.1 毫米波雷达测速测距的数学原理1.4.2 毫米波雷达测角度的数学原理1.4.3 硬件接口1.4.4 关键零部件1.4.5 数据的协议与格式1.5 车载毫米波雷达的重要参数1.6 车载…

94. BERT以及BERT代码实现

1. NLP里的迁移学习 使用预训练好的模型来抽取词、句子的特征 例如word2vec 或语言模型 不更新预训练好的模型需要构建新的网络来抓取新任务需要的信息 Word2vec忽略了时序信息,语言模型只看了一个方向Word2vec只是抽取底层的信息,作为embedding层&…

数据太多?3款免费数据分析软件,分分钟解决

本文分享下我在做数据分析时用过的几个简单易上手的数据可视化软件。 先放上目录: 数据统计收集类——简道云数据图表美化类——图表秀数据开发类——Echart 01 简道云 https://www.jiandaoyun.com/ 适用于:想要“简单易上手”适合业务人员&#xff0…

TF-A源码移植的过程

1.解压标准 tf-a 源码包: tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz 2.将 ST 官方补丁文件打到 tf-a 源码中: 3.配置交叉编译工具链: 进入~/FSMP1A/tf-a-stm32mp-2.2.r2-r0$ 目录下,打开Makefile.sdk 将如下内容进行更改 4.复制设…

【前端设计】监控顺序返回型总线超时的计时器模块设计

前言 总线超时检查机制是系统中必要的模块设计,用于在总线无法返回response时能够及时上报中断。从理论上分析,如果总线发生了诸如挂死或者物理损坏等超时行为,无论计时器上报timeout的时间偏大还是偏小,都是一定可以上报中断的。…

Xilinx MicroBlaze系列教程(适用于ISE和Vivado开发环境)

本文是Xilinx MicroBlaze系列教程的第0篇文章。这个系列文章是我个人最近两年使用Xilinx MicroBlaze软核的经验和笔记,以Xilinx ISE 14.7和Spartan-6,以及Vivado 2018.3和Artix-7为例,介绍MicroBlaze软核、AXI系列IP核的软硬件使用,希望能帮助到更多的人。 MicroBlaze是Xil…