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.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : H.264
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      creation_time   : 2022-08-31T02:15:18.000000Z
      handler_name    : Core Media Audio
      vendor_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 常用命令行详解 - 掘金

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况

mybatis-plus批量保存异常及效率优化

最近基于自己公司内部服务维护,发现其中调度中心近期出现不少错误日志,但是该任务却是正常执行,生成的报表数据也是正常的,所以很多天没有发现问题 这就匪夷所思了, 经仔细排查发现,是触发了feign超时hyst…

Js-WebAPIs-事件(二)

事件监听(绑定) 什么是事件? 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响…

1.19(232.用栈实现队列)

1.19(232.用栈实现队列) 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据&a…

牛客月赛86+cf(edu)好题

思路&#xff1a;前缀和双指针 代码&#xff1a; #include <bits/stdc.h> using namespace std; using i64 int64_t; int main() {cin.tie(nullptr)->sync_with_stdio(false);cout << fixed << setprecision(20);int t 1;for (int ti 0; ti < t; …

C语言之通过指针操作字符串

下面我们来学习通过指针来灵活操作字符串的方法 判断字符串的长度 我们用对指针的遍历来实现判断字符串的长度 #include <stdio.h> int str_length(const char*s) {int len 0;while(*s)len;return len; } int main() {char str[128];printf("请输入字符&#xff…

猫咪增肥发腮吃什么?适合猫咪增肥发腮的猫罐头推荐

冬天开始了&#xff0c;北方的小猫咪们有暖气还好过一些&#xff0c;南方的猫咪就只能依靠自己的抵抗力来过冬了。如果不囤点肉肉&#xff0c;怕冷的小猫咪要怎么过冬啊&#xff1f;有些猫咪无论怎么吃也吃不胖&#xff0c;真的很让铲屎官烦恼。 作为一个开宠物店6年了的铲屎官…

温故而知新:直方图均衡、直方图匹配的再次理解

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 引言 数字图像处理的知识在2年前学过一阵子&#xff0c;但没学完&#xff0c;后来基于各种原因就停滞了整整2年没有学习了&#xff0c;现在准备重新开始&#xff0c;为此把以前学习写的总结博文翻出来重新进…

初识VUE

文章目录 Vue是什么1.创建一个Vue实例2.插值表达式{{ }}3.Vue的响应式特性4.开发者工具的安装 Vue是什么 概念&#xff1a;Vue是一个用于构建用户界面的渐进式框架 ①构建用户界面&#xff1a;基于数据渲染出用户看到的界面 ②渐进式&#xff1a;循序渐进 ③ 框架&#xff1…

【每日一题】2809. 使数组和小于等于 x 的最少时间-2024.1.19

题目&#xff1a; 2809. 使数组和小于等于 x 的最少时间 给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒&#xff0c;对于所有下标 0 < i < nums1.length &#xff0c;nums1[i] 的值都增加 nums2[i] 。操作 完成后 &#xff0c;你可以进行如下操作&…

什么是区块链?

区块链 区块链 &#xff08;英语&#xff1a;blockchain&#xff09;是借由 密码学 与 共识机制 等技术建立&#xff0c;存储数据的 保证不可篡改和不可伪造的 分布式技术。 什么是区块 区块 就是将一批数据打包在一起&#xff0c;并且给打包出来的区块编号。第一个区块的编…

北斗导航 | 基于恒定虚警率算法的接收机自主完好性监测(附Matlab代码)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 基于恒定虚警率算法的接收机自主完好性监测 输入输出外部引用代码参考…

基于springboot+vue的旅游网站系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Java Springboot SSE如何判断客户端能否正常接收消息

目录 背景解决方案思路代码代码解释 Java反射知识点补充 背景 当新建一个 emitter 对象的时候, 它的默认超时时间是 30s. SseEmitter emitter new SseEmitter(); 但是很多情况下, 默认30s的时间太短, 需要把 emitter 对象的超时时间设置成不超时, 也就是永久有效. private …

Proxifier海外動態IP代理工具使用教程

Proxifier是一款多平臺代理客戶端&#xff0c;能讓不支持代理伺服器的程式正常運行。它支持各種操作系統和代理協議&#xff0c;並允許自定義端口和應用程式代理設置。用戶可以將其與代理伺服器集成&#xff0c;從而最大程度釋放性能效果。 本文將對其進行全面的概述&#xff…

Docker 安装 MySQ

Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能&#xff0c;MySQL 已成为 Web 应用程序的数据库优先选择。 1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址&#xff1a;https://hub.docker.com/_/mysql?tabtags 。 可以通过 Sort b…

上海亚商投顾:沪指冲高回落 旅游板块全天强势

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落&#xff0c;创业板指跌近1%&#xff0c;北证50指数跌超3%。旅游、零售板块全天强势&#xf…

Red Hat Enterprise Linux 7.9 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。需要注意的不同主板默认或者自行配置的固件类型不一致&#xff0c;引导界面有所不同。也就是说使用UEFI和BIOS的安装引导界面是不同的&#xff0c;如图所示。若手动调…

29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错

文章目录 盲注增删改查 盲注 概念&#xff1a;在注入过程中&#xff0c;获取的数据不能回显至前端页面&#xff0c;此时我们需要利用一些方法进行判断或尝试&#xff0c;这个过程被称为盲注。 解决&#xff1a;常规的联合查询注入不行的情况。 分类&#xff1a; 基于布尔的SQ…

【51单片机系列】proteus中的LCD12864液晶屏

文章来源&#xff1a;《单片机C语言编程与Proteus仿真技术》。 点阵字符型LCD显示模块只能显示英文字符和简单的汉字&#xff0c;要想显示较为复杂的汉字或图形&#xff0c;就必须采用点阵图型LCD显示模块&#xff0c;比如12864点阵图型LCD显示模块。 文章目录 一、 LCD12864点…