ffmpeg常用命令及介绍

news/2025/1/11 23:27:24/

FFmpeg 是一个非常强大的多媒体处理工具,可以用来进行视频和音频的转换、剪辑、合并、提取等多种操作。以下是一些常用的 FFmpeg 命令及其功能介绍:

1. 基本命令结构

FFmpeg 的基本命令结构如下:

ffmpeg [全局选项] [输入文件选项] -i 输入文件 [输出文件选项] 输出文件

2. 常用命令

2.1 查看媒体文件信息

使用 ffprobeffmpeg -i 查看媒体文件的详细信息。

ffprobe -i input.mp4

ffmpeg -i input.mp4
2.2 视频格式转换

将一个视频文件从一种格式转换为另一种格式。

ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
2.3 音频格式转换

将一个音频文件从一种格式转换为另一种格式。

ffmpeg -i input.wav -c:a libmp3lame output.mp3
2.4 提取音频

从视频文件中提取音频并保存为单独的音频文件。

ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
2.5 提取视频

从视频文件中提取视频流(无音频)。

ffmpeg -i input.mp4 -c copy -an output.mp4
2.6 裁剪视频

裁剪视频的指定时间段。

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4
2.7 合并视频

将多个视频文件合并为一个文件。

ffmpeg -i "concat:input1.mp4|input2.mp4" -c copy output.mp4

或者使用 concat 文件列表:

echo "file 'input1.mp4'" > filelist.txt echo "file 'input2.mp4'" >> filelist.txt ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
2.8 调整分辨率

将视频文件调整为指定的分辨率。

ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
2.9 调整比特率

设置视频和音频的比特率。

ffmpeg -i input.mp4 -b:v 1000k -b:a 128k output.mp4
2.10 添加水印

在视频上添加水印。

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
2.11 旋转视频

旋转视频 90 度。

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
2.12 截取视频帧

从视频中截取一帧图像。

ffmpeg -i input.mp4 -ss 00:00:01 -vframes 1 output.jpg
2.13 更改帧率

更改视频的帧率。

ffmpeg -i input.mp4 -r 30 output.mp4
2.14 更改音频采样率

更改音频的采样率。

ffmpeg -i input.mp3 -ar 44100 output.mp3
2.15 更改音频声道数

更改音频的声道数。

ffmpeg -i input.mp3 -ac 2 output.mp3
2.16 静音或删除音频

删除视频中的音频。

ffmpeg -i input.mp4 -c copy -an output.mp4
2.17 添加音频到视频

将音频文件添加到视频文件中。

ffmpeg -i input.mp4 -i audio.mp3 -c copy -shortest output.mp4
2.18 生成缩略图

生成视频的缩略图。

ffmpeg -i input.mp4 -vf fps=1/60 thumbnails_%03d.jpg

3. ffmpeg的filter使用方式

3.1常用filter

3.1.1 缩放 (scale)

调整视频的分辨率。

ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
3.1.2 裁剪 (crop)

裁剪视频的一部分。

ffmpeg -i input.mp4 -vf "crop=640:360:0:0" output.mp4
  • crop=out_w:out_h:x:y:其中 out_w 和 out_h 是输出宽度和高度,x 和 y 是裁剪区域的起始坐标。
3.1.3 叠加 (overlay)

在视频上叠加另一个视频或图像。ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

  • overlay=x:y:其中 x 和 y 是叠加位置的坐标。
3.1.4 旋转 (transpose)

旋转视频。

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
  • transpose=1:顺时针旋转90度。
  • transpose=2:逆时针旋转90度。
  • transpose=3:顺时针旋转90度并垂直翻转。
  • transpose=4:逆时针旋转90度并垂直翻转。
3.1.5 淡入淡出 (fade)

添加淡入淡出效果。

ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=1,fade=t=out:st=59:d=1" -c:a copy output.mp4
  • fade=t=in:st=0:d=1:从第0秒开始,持续1秒的淡入效果。
  • fade=t=out:st=59:d=1:从第59秒开始,持续1秒的淡出效果。
3.1.6 颜色调整 (eq)

调整视频的颜色、亮度、对比度等。

ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.5:saturation=1.2" output.mp4
  • brightness:亮度。
  • contrast:对比度。
  • saturation:饱和度。
3.1.7 模糊 (gblur)

添加高斯模糊效果。

ffmpeg -i input.mp4 -vf "gblur=sigma=5" output.mp4
  • sigma:控制模糊程度。
3.1.8 抽取帧 (select)

抽取特定条件的帧。

ffmpeg -i input.mp4 -vf "select='gt(scene,0.4)',setpts=N/FRAME_RATE/TB" -vsync vfr output_%d.jpg
  • select='gt(scene,0.4)':选择场景变化大于0.4的帧。
  • setpts=N/FRAME_RATE/TB:重新设置时间戳。
  • -vsync vfr:保持原始帧率。

3.2 常用音频滤镜

3.2.1 音量调整 (volume)

调整音频的音量。

ffmpeg -i input.mp3 -af "volume=0.5" output.mp3
  • volume=0.5:将音量降低到50%。
3.2.2 均衡器 (equalizer)

调整音频的频率响应。

ffmpeg -i input.mp3 -af "equalizer=f=1000:t=h:width_type=o:width=2:g=10" output.mp3
  • f=1000:中心频率为1000 Hz。
  • t=h:类型为高通。
  • width_type=o:带宽类型为八度。
  • width=2:带宽为2个八度。
  • g=10:增益为10 dB。
3.2.3 混响 (aecho)

添加混响效果。

ffmpeg -i input.mp3 -af "aecho=0.8:0.88:60:0.4" output.mp3
  • aecho=in_gain:out_gain:delays:decays:分别控制输入增益、输出增益、延迟时间和衰减系数。
3.2.4 动态范围压缩 (compand)

压缩音频的动态范围。

ffmpeg -i input.mp3 -af "compand=attacks=0:points=-80/-80|-40/-40|0/-30|20/-20|40/-20|60/-20|80/-20:gain=10" output.mp3
  • attacks=0:攻击时间为0。
  • points:定义压缩点。
  • gain=10:增益为10 dB。

3.3. 复杂滤镜链

多个滤镜可以组合成一个复杂的滤镜链。

ffmpeg -i input.mp4 -vf "scale=1280:720,crop=1000:1000:100:100,transpose=1,fade=t=in:st=0:d=1,fade=t=out:st=59:d=1" -c:a copy output.mp4

3.4. 使用 filter_complex

对于更复杂的操作,可以使用 filter_complex 选项。

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v][1:v]overlay=10:10,format=yuv420p[v]; [0:a]volume=0.8[a]" -map "[v]" -map "[a]" output.mp4
  • [0:v] 和 [1:v] 分别表示第一个和第二个输入文件的视频流。
  • [0:a] 表示第一个输入文件的音频流。
  • overlay=10:10 将水印叠加在视频上。
  • format=yuv420p 确保输出格式兼容性。
  • volume=0.8 调整音频音量。

4. 总结

FFmpeg 是一个极其强大的工具,适用于各种音视频处理任务。通过上述命令,你可以完成大多数常见的音视频处理需求。如果你有更具体的需求或遇到问题,可以通过查阅 FFmpeg 的官方文档或社区资源来获取更多信息。


http://www.ppmy.cn/news/1562352.html

相关文章

鼠标过滤驱动

文章目录 概述代码参考资料 概述 其编写过程大体与键盘过滤驱动相似,只需要切换一下附加的目标设备以及创建的设备类型等。但在该操作后依然无法捕获到Vmware创建的win7操作系统的鼠标irp信息,于是通过在获取鼠标驱动,遍历其所有的设备进而附…

省市区三级联动(后端)

前提:springboot、mybatis-plus、swagger 数据库: 文章顶部 实体类: City package com.itfly.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.Loca…

如何在 Ubuntu 22.04 上安装 Nagios 服务器教程

简介 在本教程中,我们将解释如何在 Ubuntu 22.04 上安装和配置 Nagios,使用 Apache 作为 Web 服务器,并通过 Let’s Encrypt Certbot 使用 SSL 证书进行保护。 Nagios 是一个强大的监控系统,它可以帮助组织在 IT 基础设施问题影…

使用 Three.js 创建动态粒子效果

今天,带大家使用粒子实现一个粒子飞毯的效果,我们先来看一下效果。 实现 初始化场景 首先创建一个场景,所有 3D 对象都会被添加到这个场景中。 const scene new THREE.Scene();相机和渲染器 配置相机和渲染器来捕捉和显示场景。 相机…

【如何使用JVM工具进行性能分析?】

如何使用JVM工具进行性能分析? 使用JVM工具进行性能分析可以帮助开发者监控Java应用程序的运行状况,识别潜在的性能瓶颈,并据此进行优化。以下是几种常用的JVM性能分析工具及其详细使用方法: 1. jstat jstat是一个命令行工具&a…

事务,事务的特点,事务并发带来的问题,实现事务管理

1.什么是事务 1、事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 2、事务是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全不起作用。 2.事务的特点 ACID 1.原子性&#xf…

51单片机——中断(重点)

学习51单片机的重点及难点主要有中断、定时器、串口等内容,这部分内容一定要认真掌握,这部分没有学好就不能说学会了51单片机 1、中断系统 1.1 概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在&#…

Vue.js 中父组件与子组件通信指南

Vue.js 中父组件与子组件通信指南 引言 在构建复杂的用户界面时,Vue.js 的组件化开发模式允许我们将应用分解为多个小而独立的组件。这些组件之间往往需要进行数据交换或事件触发等交互行为。本文将探讨如何在Vue.js中实现父组件与子组件之间的通信。 使用Props从…