ffmpeg 常用命令行详解

这篇具有很好参考价值的文章主要介绍了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加群免费领取~

ffmpeg 常用命令行详解,ffmpeg

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 常用命令行详解 - 掘金文章来源地址https://www.toymoban.com/news/detail-808199.html

到了这里,关于ffmpeg 常用命令行详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用 FFmpeg 命令

    视频添加字幕 或:(烧录为 mp4,速度慢) 视频提取字幕 这将下载第一个字幕轨。如果有多个,则使用 0:s:1 下载第二个, 0:s:2 下载第三个,以此类推。可以生成任意所需的格式,改一下扩展名即可。 图片压缩 -q 4 为压缩级别,数字越大压缩级别越高 约束比例压缩 scale=-1:

    2023年04月08日
    浏览(52)
  • FFmpeg- 常用的滤镜命令

    下面来熟悉一下常用的对视频操作的几个命令。这次需要完成的命令也包括在其中。 视频的画面大小的剪切(crop filter) 将输入的视频的帧,以左上角为坐标的原点,剪切成x,y坐标开始的指定大小。 语法: 简单的解释: x,y :是偏移量。 ow,oh :是输出的宽和高。 iw ih :还可以使用

    2023年04月16日
    浏览(43)
  • FFMPEG常用命令 音视频合并

            目录 一、音频合并 1.获取音频时长 2.合并两段音频 3.合并音频插入空白 二、视频加背景图 三、音视频合成 1.保留视频声音 2.不保留视频声音 四、合并视频         本文将用几个实例,介绍ffmpeg命令的综合使用,主要涉及音频处理、视频处理和音视频合成。 参数

    2024年02月10日
    浏览(72)
  • 【FFMPEG笔记·命令行手册】部分关键概念及常用命令行整理

    简记FFMPEG的部分关键概念,整理常用命令行手册以备查找。本文并非严格的学术文章,部分词汇按个人标准翻译,请认准英文。 FFMPEG多媒体编解码流程 输入解复用(demux)调用demuxer读取输入文件并获得数据包 解码(decode)解码器产生未压缩帧(原始视频/PCM音频等) 滤镜处

    2023年04月09日
    浏览(40)
  • 音视频学习之ffmpeg常用基础命令整理

    基于windows环境安装好必要的ffmpeg后,对ffmpeg基础命令进行一些了解:   有时候写入MP4文件会不成功,改成flv就好 1:视频裁剪:   2:文字水印: 编译的时候需要支持 FreeType、FontConfig、iconv,系统中需要有相关的子库, 在 FFmpeg 中增加纯字母水印可以使用 drawtext 滤镜进行支持

    2024年02月12日
    浏览(52)
  • FFmpeg常用实例详解

    FFmpeg 是一个专业的多媒体框架,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放几乎所有格式的媒体文件。 这里通过一些示例简单地介绍下 ffmpeg 命令的基本使用。 一、获取详细信息 ffmpeg -i inputfile -hide_banner 其中 -hide_banner 选项用于在输出文件的详细信息时

    2024年04月29日
    浏览(31)
  • 【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

    PCM 全称 \\\" Pulse Code Modulation \\\" , 脉冲编码调制 , 该 音频数据 是未经压缩的 采样裸数据 , 只有 知道该数据的 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始的音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩 分为 无损压缩

    2024年04月11日
    浏览(50)
  • Linux常用命令之find命令详解

    find命令主要用于:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时,不设置任何参数,则find命令将在 当前目录 下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 是我们在日常维护Linux时必备的一个

    2024年02月03日
    浏览(38)
  • git常用命令详解

    git常用命令详解 Git 是一个分布式版本控制系统,用于追踪文件的变化并协作开发。以下是一些常用的 Git 命令及其详细说明: 初始化仓库: 说明: 在当前目录下初始化一个新的 Git 仓库。 克隆仓库: 说明: 从远程仓库克隆一份代码到本地。 添加文件到暂存区: 说明: 将

    2024年02月03日
    浏览(36)
  • SQL注入常用命令详解

    SQL注入是一种网络攻击技术,通过在应用程序的输入字段中插入或“注入”恶意SQL代码,攻击者能够操纵数据库的查询,从而窃取、篡改或删除数据。这种攻击通常发生在应用程序对用户输入的数据没有进行充分的验证或处理不当的情况下。 SQL注入的基本原理是将恶意的SQ

    2024年01月19日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包