ffmpeg 常用命令行详解

概述

ffmpeg 是一个命令行音视频后期处理软件

1. 裁剪命令

参数说明

  • -i 文件,orgin.mp3 为待处理源文件
  • -ss 裁剪时间,后跟裁剪开始时间,或者开始的秒数
  • -t 裁剪时间
  • output.mp3 为处理结果文件
ffmpeg -i organ.mp3 -ss 00:00:xx -t 120 output.mp3
ffmpeg -i organ.mp3 -ss 360 -t 230 output.mp3

2. 合成命令
2.1 混合合成
参数说明

  • -i 文件 1.mp3 和 2.mp3 为待合成的两个源文件
  • -filter_complex 过滤器参数
  • amix=inputs 配置输入的整体样本数
  • duration,first:长度取决于第一个文件,longest:长度取决于时间最长文件,shortest:长度取决于时间最短文件
  • dropout_transition:输入流结束时用于体积重新规范化的过渡时间
  • -f mp3 设置导出文件格式

ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

2.2 连接合成

参数说明

  • concat 合并文件指令
ffmpeg -i "concat:Box01.mp3|Box02.mp3" Box.mp3
ffmpeg -i "concat:headerNew.mp3|006.mp3" -acodec copy demo6.mp3

2.3 淡出效果

参数说明

  • afade 淡入淡出指令
  • 从 st 秒开始,经过 d 秒钟的淡出效果
ffmpeg -i bgm3.mp3  -filter_complex afade=t=out:st=16:d=4 bgm31.mp3

2.4 合并背景音和视频

首先需要将原视频的声音删除。这里的文件名需要加上英文引号,如果不加的话,会提示No such file or directory。

ffmpeg -i "audio.mp4" -y -f mp4 -an -codec copy -q:v 1 "audio-无声.mp4"

然后将无声视频和音频融合

ffmpeg -i audio-无声.mp4 -i accompaniment.wav -c:v copy -c:a aac -strict experimental audio-消音.mp4

即可获得消去人声的视频。但笔者口语不好,觉得原视频的语速有些快了,故又调整了视频倍速为0.8倍速。

ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=10/8*PTS[v];[0:a]atempo=0.8[a]" -map "[v]" -map "[a]" test-2.mp4

这条指令同时调整视频倍速和音频倍速,setpts=(倍速的倒数)*PTS[v],atempo=(倍速)[a]

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

3. 转换调整命令

3.1 格式转换

参数说明

  • -i 文件,a.mp3 为待处理源文件
  • -ar 音频抽样率
  • -ac 音频Channel数
  • -f 强制输出格式 例如mp3, wav等

# 将a.mp3转化程a.wav,设定抽样率为16000
ffmpeg -i a.mp3 -ar 16000 -ac 1 a.wav
# 将Frozen.mka转化成a.mp3
ffmpeg -i Frozen.mka -ar 16000 -f mp3 a.mp3

3.2 音量调整

参数说明

  • -i 文件,a.mp3 为待处理源文件
# 音量256为原始音量,如果要调整到两倍音量,则设置为512,调整到一半音量,则设为128,下面为减小一半音量的命令
ffmpeg -i Box.mp3 -vol 128 box3.mp3
# 使用dB调整音量
ffmpeg -i a.mp3 -af volume=-20dB b.mp3

  • dB的换算公式 1.1 dB = 1.1 倍,2 dB = 1.25倍,3 dB = 1.4倍,6 dB = 2 倍,10 dB = 3 倍,20 dB = 10 倍,30 dB = 30 倍。其它就可以用上述数值换算,并不困难。(反过来 – 6 dB 就是 1/2 = 0.5) 2.在换算时要把握一个原则,dB数值的相加 等于 倍数的相乘。 例如:40 dB = 20dB + 20 dB = 10 * 10 = 100 倍 -20dB谱宽就是信号衰减到十分之一时的频谱带宽。

3.3 升降调

# 升半音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(1/12),atempo=1/2^(1/12)" "output.mkv"
# 升全音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(2/12),atempo=1/2^(2/12)" "output.mkv"
# 降半音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-1/12),atempo=1/2^(-1/12)" "output.mkv"
# 降全音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-2/12),atempo=1/2^(-2/12)" "output.mkv"

3.4 音频速率调整

改变音频速率最简单的方法是直接调整音频的采样率,但是与此同时,这种方法会改变音频的音色。目前一般采用对原音进行重采样,差值等方法来实现。下面这行命令的倍率调整范围为0.5到2。

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

如果想要再快的话,需要更改命令,通过将多个atempo过滤器串接在一起来绕过这个限制。

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

3.5 视频速率调整

改变视频的播放速率是通过修改视频的表示时间戳(PTS)来实现的。举个简单的例子,如果在时间戳1和2处显示两个连续帧,我们想要加快视频速度,那么这两个时间戳需要分别变为0.5和1。因此,我们必须把他们乘以0.5。

ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.5*PTS" output.mkv

对视频进行加速时,为了不丢帧,可以利用-r 参数指定输出的fps。 一般来说,视频倍速还需要将视频中的音频也一同倍速,通过混合的过滤图实现,命令如下,

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

4. 提取命令

4.1 从视频中提取音频

参数说明

-map 提取视频-音频流的序号 -b:a 码率 kb/s -f 强制输出格式 例如mp3, wav等

# 从frozen.mkv中,提取音频文件,保存为audio.1.mp3
ffmpeg -i frozen.mkv -map 0:1 -b:a 64k -f mp3 a.1.mp3
ffmpeg -i frozen.mp4 -q:a 0 -map a audio.mp3
ffmpeg -i frozen.mp4 -vn -codec copy audio.m4a
ffmpeg -i audio.m4a -y -acodec libmp3lame -aq 0 audio.mp3

查看视频,包含的视频流、音频流如下: encoder : libebml v1.2.3 + libmatroska v1.3.0 Duration: 01:42:13.09, start: 0.000000, bitrate: 2954 kb/s Stream #0:0: Video: h264 (High), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 23.98 fps Stream #0:1(eng): Audio: ac3, 48000 Hz, 384 kb/s (default) title : 英语 Stream #0:2(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 台配 Stream #0:3(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 粤语
查看原音视频文件音轨频率
 

ffmpeg -i "mine.mkv"

命令执行后找到音轨的Stream,频率为48000Hz;

 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 2316x1440, 22449 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)Metadata:creation_time   : 2022-08-31T02:15:18.000000Zhandler_name    : Core Media Videovendor_id       : [0][0][0][0]encoder         : H.264Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)Metadata:creation_time   : 2022-08-31T02:15:18.000000Zhandler_name    : Core Media Audiovendor_id       : [0][0][0][0]

5. 消音命令

参数说明

  • -i 文件,a.mp3 为待处理源文件
  • -ac 音频Channel数
ffmpeg -i file.mp3 -af pan="stereo|c0=c0|c1=-1*c1" -ac 1 karaoke.mp3

原文链接 ffmpeg 常用命令行详解 - 掘金

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

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

相关文章

无刷电机学习-原理篇

一、无刷电机的优点 使用一项东西首先就要明白为什么要使用它,使用它有什么优点。与有刷电机相比无刷电机除了控制繁琐几乎全是优点。 1、应用范围广:家用电器(冰箱空调压缩机、洗衣机、水泵等)、汽车、航空航天、消费品工业自动…

4个值得使用的免费爬虫工具

在信息时代,数据的获取对于各行业都至关重要。而在数据采集的众多工具中,免费的爬虫软件成为许多用户的首选。本文将专心分享四款免费爬虫工具,突出介绍其中之一——147采集软件,为您揭示这些工具的优势和应用,助您在数…

【c语言】扫雷(上)

先开一个test.c文件用来游戏的逻辑测试,在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤: 游戏规则: 输入1(0)开始(结束)游戏,输入一个坐标,如果该坐…

nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

一、背景 docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。 我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。 但是,前端组很追求新技术,不…

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性,较固定资产抵押和质押、第三方担保等方式,股权质押融资风险易受企业经营状况等因素的影响,主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…

前端面试题汇总大全(含答案)-- 持续更新

​一、HTML 篇 1. 简述一下你对 HTML 语义化的理解? 用正确的标签做正确的事情。 html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易…

学习Spring的第八天

先对自定义类使用MyComponet的注解,在设置这个MyComponet的的属性(一个 interface接口),然后,扫描(BaseClassScanUtils.java执行,这文件不重要)当前包下是否有这个注解的类,再用MyComponentBeanFactoryPostProcessor.java(后工厂…

AI智能绘图,触手可及的未来

AI智能绘图不仅仅是技术的体现,更是对人类情感的共鸣。它能够根据用户的描述或情感需求,自动生成与之相匹配的画作。它们或细腻如丝,或磅礴如海,或温婉如诗,或激昂如歌,而这正是AI智能绘图的魅力所在。 所…

bgp基础实验

最终实验效果: 全网可达:R1,R7路由表都有r1-r7环回,R1汇总0.0/22和1.0/24,R7另一环回172.16.2.1/32 用tracert命令来R1 ping R7环回,实现全网通 实现代码: 首先配置好接口ip和环回,然后: [r1] rip 1 version 2 network 1.0.0.0 network 12.0.0.0 network 192.168.1.0 …

顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音:一步步配置(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音:一步步配置 一、配置acl.conf 打开ccadmin-》点击配置文件并且打开acl.conf-》配置好了点击提交XML。 注意:acl.conf的服务器IP必须是内网IP 添加了之后在运维调试输入reloadacl 在运维调试执…

【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot

1、使用命令安装 sudo apt install qtcreator sudo apt install qt6-* sudo apt install libqt6* sudo apt install qml-qt6 sudo apt install qmlscene-qt6 sudo apt install assistant-qt6 sudo apt install designer-qt62、启动 qtcreator 3、常用工具安装 sudo apt in…

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

文章目录 前言问题分析解决方案方案一&#xff1a;使用 CDATA 区块&#xff0c;依然使用 “ > ” 或者 “ < ”方案二&#xff1a;使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错&#xff1a; Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…

目标文献分析方法

如何正确选题&#xff1f; 不仅仅是题目&#xff0c;而是研究工作的起步选题步骤&#xff1f; 发现问题选择方向调查研究分析论证确定选题 中国知网 深度学习方向词 1检索&#xff1a;深度学习 医疗影像 1 发表时间要最新 2 显示50个&#xff0c;全选 3 导出文献格式Ref 4 导…

SpringCloud Aliba-Sentinel【中篇】-从入门到学废【5】

目录 1.流控规则 2. 熔断规则 3.热点规则 1.流控规则 1.资源名&#xff1a;唯一名称&#xff0c;默认请求路径 2.针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源) 3.阈值类型/单机阈值&#xff1a; QPS&#xff08;每秒钟的请求数量&…

高光谱分类论文解读分享之HybridSN:基于 3-D–2-D CNN 的高光谱分类(经典回顾)

IEEE GRSL 2019&#xff1a;HybridSN&#xff1a;基于 3-D–2-D CNN 的高光谱分类 题目 HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification 作者 Swalpa Kumar Roy, Student Member, IEEE, Gopal Krishna, Shiv Ram Dubey , Mem…

探秘网络爬虫的基本原理与实例应用

1. 基本原理 网络爬虫是一种用于自动化获取互联网信息的程序&#xff0c;其基本原理包括URL获取、HTTP请求、HTML解析、数据提取和数据存储等步骤。 URL获取&#xff1a; 确定需要访问的目标网页&#xff0c;通过人工指定、站点地图或之前的抓取结果获取URL。 HTTP请求&#…

python有哪些解释器?

Python的解释器有&#xff1a; CPython&#xff1a;官方的Python解释器&#xff0c;使用C语言实现。Jython&#xff1a;运行在Java平台上的Python解释器&#xff0c;使用Java语言实现。IronPython&#xff1a;运行在.NET平台上的Python解释器&#xff0c;使用C#语言实现。PyPy…

深度学习从入门到不想放弃-6

这节要讲完距离基础部分就真完事了,不继续在基础中求得基础了,我发现也没人看 书接前文深度学习从入门到不想放弃-5 (qq.com) 前文书写到要合理的设计特征是什么概念,我们再拿两个例子复习一下 比如一个卖车网站,上节我们讲过对物体识别可以用RGB来表示颜色的维度,…

大数据开发之Hadoop(完整版+练习)

第 1 章&#xff1a;Hadoop概述 1.1 Hadoop是什么 1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2、主要解决&#xff0c;海量数据的存储和海量数据的分析计算问题。 3、Hadoop通常是指一个更广泛的概念-Hadoop生态圈 1.2 Hadoop优势&#xff08;4高&#xf…

linux云服务器 如何将数据盘挂载到系统盘上面?

先认识认识下面几个常用命令 lsblk 命令&#xff1a;查看设备列表&#xff0c;也就是能看到系统盘和数据盘一般为&#xff1a;vda&#xff08;系统盘&#xff09;、vdb&#xff08;数据盘&#xff09;等等 lsblk"ls" 是 "list" 的缩写&#xff1a; lsblk…