ffmpeg不常用命令整理
最近做了许多有关音视频方面的工作,接触了一些不常用的命令,整理分享出来。
1.剪辑视频
ffmpeg -ss 1 -to 4 -accurate_seek -i input.mp4 -c:v copy output.mp4
指定从视频中的第1秒开始,到第4秒结束的部分剪辑。
ss:指定开始时间。to:指定结束时间。如果换成t,就是持续时间(1s + 4s)。accurate_seek:时间定位时使用更精确的寻找方式。- 时间也可以使用时分秒的格式。例如"00:01:30"表示1分30秒。
- 注意参数的顺序,不要把
-i放在前面,否则会无效。
2.裁切视频
ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4
裁切视频的指定区域。
- 注意码率,可以添加
-b:v指定。否则默认按200k处理。 crop=w:h:x:y:w和h分别表示裁剪后的宽度和高度,x和y表示裁剪的起始位置。比如一个1920x1080的视频,我需要裁切中间1080x1080的区域,那就是crop=1080:1080:420:0。
3.去除绿幕并修改颜色
ffmpeg -i input.mp4 -vf "chromakey=#3fff08:0.1:0.04" -c:v qtrle -c:a copy output.mov
#3fff08是绿幕的颜色,也就是需要替换为透明的颜色。0.1是相似度(similarity)参数。这个参数决定了颜色匹配的严格程度。值越小,匹配的颜色范围越窄,也就是说,只有非常接近指定颜色的像素才会被视为透明。值越大,匹配的颜色范围越宽,也就是说,即使颜色和指定颜色有一些差距,也会被视为透明。0.04是混合度(blend)参数。这个参数决定了边缘像素的处理方式。值越小,边缘像素的处理越严格,可能会导致边缘部分出现锐利的边缘。值越大,边缘像素的处理越宽松,可能会导致边缘部分出现柔和的过渡。
ffmpeg -i output.mov -vf "color=color=#2B2D30:size=1920x1080 [bg]; [bg][0:v] overlay=shortest=1" output2.mp4
#2B2D30是需要修改的视频背景色。1920x1080是视频的分辨率,也就是给视频一个这么大的背景。
详细内容可以参看我的上篇博客:通过ffmpeg实现视频背景色替换
4.视频填充
ffmpeg -i input.mp4 -vf "scale=780:780:force_original_aspect_ratio=decrease,pad=1920:1920:(ow-iw)/2:(oh-ih)/2:color=#F5F5F5,setsar=1"
scale=780:780:表示对输入视频进行缩放操作,将视频的宽和高都缩放到780像素。force_original_aspect_ratio=decrease:保持原始宽高比例。如果缩放后的视频超出了指定的尺寸,它会减少宽度或高度以保持宽高比,从而确保视频不会被拉伸。pad=1920:1920:将视频填充到1920x1920的分辨率。(ow-iw)/2:(oh-ih)/2:这些是填充的位置参数,表示填充的位置是在视频宽高的中心位置。ow,oh分别代表输出宽度和高度,iw,ih分别代表输入宽度和高度。你可以根据自己的情况计算。color=#F5F5F5:填充的颜色。setsar=1:它将视频的 SAR 设置为 1:1,有助于确保在不同的播放设备上视频的显示不会出现形变。
5.获取指定帧数图片
ffmpeg -i input.mp4 -vf "select='eq(n, N)'" -vframes 1 output_image.jpg
select='eq(n, N)':过滤器表达式,用于选择特定的帧数N。如果我们需要最后一帧,那就是总帧数-1。比如视频500帧,那就是select='eq(n,499)'。-vframes 1:指定处理的视频帧数为1帧。- 这种方式相较其他指定时间的方式更精准更灵活,可以获取更加准确的图像数据。只是需要预先知道视频的总帧数。
获取视频总帧数可以使用:
ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
6.图片合成视频
ffmpeg -loop 1 -i output_image.jpg -c:v libx264 -t 30 -pix_fmt yuv420p -vf "scale=1920:1080" -r 30 still_video.mp4
-loop 1:1表示启用循环。此时会无限循环图片。0的话就是一遍。-c:v:指定视频编解码格式libx264。-t:指定输出视频的时间。这里是30s。-pix_fmt:指定像素格式yuv420p。-vf "scale=1920:1080":将图片缩放到1920x1080像素的大小。如果原始图片的宽高比与1920x1080不同,那么图片将被拉伸以适应这个分辨率。-r:指定帧数。这里是30帧。
7.指定固定码率(CBR)
或者说是静态码率。可以强行提升码率,比如上面图片生成的视频,可能结果就几十k的码率,如果想提高码率就可以使用此方法。
ffmpeg -i input.mp4 -b:v 2M -minrate 2M -maxrate 2M -bufsize 2M -nal-hrd cbr output.mp4
-b:v:设置视频的码率为2M。这是输出视频的平均码率。-minrate 2M:设置视频的最小码率为2M。-maxrate 2M:设置视频的最大码率为2M。-bufsize 2M:设置编码器的缓冲区大小为2M。在CBR模式下,缓冲区大小通常设置为一个与码率相同的值,这有助于维持恒定的比特率输出。-nal-hrd cbr:强制CBR模式。
输出码率结果会有一些偏差,但整体来说控制的不错。
后面我也会持续补充,大家可以收藏起来,以备不时之需。
相关文章:
ffmpeg不常用命令整理
最近做了许多有关音视频方面的工作,接触了一些不常用的命令,整理分享出来。 1.剪辑视频 ffmpeg -ss 1 -to 4 -accurate_seek -i input.mp4 -c:v copy output.mp4指定从视频中的第1秒开始,到第4秒结束的部分剪辑。 ss:指定开始时…...
怎么理解面向对象?一文带你全面理解
文章目录 1、类和对象(1)面向过程和面向对象初步认识(2)类的引入(3)类的定义(4)类的访问限定符及封装4.1 访问限定符4.2 封装 (5)类的作用域(6&am…...
神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)
目录 一、神经网络简介 二、深度学习要解决的问题 三、深度学习的应用 四、计算机视觉 五、计算机视觉面临的挑战 六、得分函数 七、损失函数 八、前向传播 九、反向传播 十、神经元的个数对结果的影响 十一、正则化与激活函数 一、神经网络简介 神经网络是一种有监督…...
Tomcat的Host Manager页面403的原因和解决办法
目录 背景 原因: 解决方案 背景 一直报错 403 Access Denied You are not authorized to view this page.By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to…...
零基础学华为ip认证难吗?华为认证费用多少?
零基础学华为ip认证难吗? 首先,零基础的学习者可以通过系统的学习,逐步掌握网络基础知识和技能。可以通过阅读教材、参加培训课程、进行实践操作等方式,不断提升自己的知识和技能水平。同时,学习者还可以利用华为提供的…...
[C语言]——内存函数
目录 一.memcpy使用和模拟实现(内存拷贝) 二.memmove 使用和模拟实现 三.memset 函数的使用(内存设置) 四.memcmp 函数的使用 C语言中规定: memcpy拷贝的就是不重叠的内存memmove拷贝的就是重叠的内存但是在VS202…...
QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)
点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…...
计算机三级——网络技术(综合题第二题)
路由器工作模式 用户模式 当通过Console或Telnet方式登录到路由器时,只要输入的密码正确,路由器就直接进入了用户模式。在该模式下,系统提示符为一个尖括号(>)。如果用户以前为路由器输入过名称,则该名称将会显示在尖指号的前…...
Python 深度学习第二版(GPT 重译)(二)
四、入门神经网络:分类和回归 本章涵盖 您的第一个真实世界机器学习工作流示例 处理矢量数据上的分类问题 处理矢量数据上的连续回归问题 本章旨在帮助您开始使用神经网络解决实际问题。您将巩固从第二章和第三章中获得的知识,并将所学应用于三个新…...
【Redis】Redis常见原理和数据结构
Redis 什么是redis redis是一款基于内存的k-v数据结构的非关系型数据库,读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 redis的数据类型 string:字符串 缓存对象,分布式ID,token,se…...
3个Tips,用“AI”开启新生活
相信最近,很多朋友们都回归到了忙碌的生活节奏中。生活模式的切换,或多或少会带来身体或情绪状况的起伏。新技术正在为人们生活的方方面面带来便利。3个小Tips或许能让你也从新技术中获益,从身到心,用“AI”开启新生活。 关”A…...
【ROS | OpenCV】在ROS中实现多版本OpenCV、cv_bridge共存:安装与配置指南
在 Ubuntu 20.04 中,ROS Noetic 默认安装的 OpenCV 版本为 4.2.0。如果您需要确认系统中已安装的 OpenCV 版本,可以使用以下命令: sudo find / -iname "*opencv*"然而,许多开源算法都是基于 OpenCV 3 编写的࿰…...
Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)
安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…...
微分学<6>——Taylor公式
索引 Taylor公式Taylor公式的定性分析定理6.1 Taylor公式(Peano余项) Taylor公式的定量分析定理6.2 Taylor公式(Lagrange余项) Taylor公式 Taylor公式的定性分析 定理6.1 Taylor公式(Peano余项) 若函数 f ( x ) f\left ( x \right ) f(x)在 x 0 x_{0} x0处的 n n n阶导数均…...
检索增强生成(RAG)应用的构建:LangChain与LlamaIndex的比较与选择
对于我要做RAG应用,我应该使用两者中的哪一个。或者说还是都使用? 在人工智能领域,检索增强生成(RAG)应用正变得越来越受欢迎,因为它们能够结合大型语言模型(LLMs)的自然语言处理能力…...
免费PDF转换和编辑工具 PDFgear 2.1.4
PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑,同时还提供了丰富的功能模块,如签名、表单填写等,方便用户进行多样化的操作。 该软件界面简洁美观,操作简单易懂,适合不同层次的用户…...
uniapp,导航栏(切换项)有多项,溢出采取左滑右滑的形式展示
一、实现效果 当有多项的导航,或者说切换项,超出页面的宽度,我们采取可滑动的方式比较好一些!并且在页面右边加个遮罩,模拟最右边有渐变效果! 二、实现代码 html代码: <!-- 头部导航栏 --…...
计算机网络面经-什么是IPv4和IPv6?
前言 Internet协议(IP)是为连接到Internet网络的每个设备分配的数字地址。它类似于电话号码,是一种独特的数字组合,允许用户与他人通信。IP地址主要有两个主要功能。首先,有了IP,用户能够在Internet上被识别…...
彻底讲透:如何写sql能够有效的使用到复合索引?
在MySQL中,有效的使用复合索引需要确保查询条件按照索引定义的列顺序进行。以下是一个具体的例子: 假设我们有一个sales表,它有四个字段:customer_id、product_category、sale_date和amount。为了优化包含这些字段查询的性能&…...
在Spring Boot中如何处理跨域请求(CORS)?
什么是跨域? 跨域(Cross-Origin Resource Sharing,CORS)是一种机制,它允许在 Web 页面上运行的脚本能够请求从不同源(域名、协议或端口)的资源。在浏览器安全策略中,有一条称为同源…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
