ffmpeg常用命令及介绍

server/2025/1/12 17:17:36/

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/server/157809.html

相关文章

用c实现C++类(八股)

在 C 语言中,虽然没有内建的面向对象编程(OOP)特性(如封装、继承、多态),但通过一些编程技巧,我们仍然可以模拟实现这些概念。下面将用通俗易懂的方式,逐步介绍如何在 C 中实现封装、…

腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏

作品介绍 贪吃蛇小游戏需要控制蛇的移动方向,使其吃掉地图上随机出现的食物,每吃掉一个食物,蛇的身体就会增长一格,是一款老少皆宜的小游戏,我们可以用腾讯ai助手生成全部代码,简单方便快捷。 技术架构 …

HTML + CSS:如何强制div内容保持一行?

参考:https://cloud.tencent.com/developer/information/HTML%20%2B%20CSS%3A%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6div%E5%86%85%E5%AE%B9%E4%BF%9D%E6%8C%81%E4%B8%80%E8%A1%8C%EF%BC%9F 在HTML和CSS中,要强制让div内容保持在一行,可以使用以下方法&a…

NFC碰一碰发视频源码搭建,支持OEM

在移动互联网技术迅速发展的当下,NFC(Near Field Communication)技术凭借其便捷、快速的交互特性,为诸多应用场景带来了创新机遇。其中,NFC 碰一碰发视频功能以其独特的交互体验,在营销推广、内容分享等领域…

w~深度学习~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12998003 #FlashAttention FlashAttention新升级!斯坦福博士一人重写算法,第二代实现了最高9倍速提升。Transformer上下文长度史诗级提升 继超快且省内存的注意力算法FlashAttention爆火后&#xf…

Java 替换字符串 replace 和 replaceAll

Java 替换字符串 replace 和 replaceAll replacereplaceAllreplaceFirstStringBuffer 或 StringBuilder 的 replace()第三方库总结 在日常的开发工作进程中,常常会碰到需要替换指定字符串的情形。接下来,就让我们详细地谈谈Java中替换字符串的几种方法吧…

无人机+无人车:车机协同技术探索详解

无人机与无人车之间的协同技术是一种重要的研究方向,它结合了无人机的高空视野和无人车的地面移动能力,旨在实现更高效、灵活的作业。以下是对无人机与无人车车机协同技术的详细探索: 一、技术基础 1. 通信机制: 无人机与无人车…

electron 上怎么用node 调用 c++ 提供的方法

背景 在 Electron 上调用 C 代码的场景主要出现在需要执行高性能、低延迟的任务,或者需要与现有的本地 C 库集成时。这些场景往往涉及底层系统交互、性能优化或跨平台兼容性需求。 我们都知道c 的性能和安全性都比JavaScript 要高,但我认为在 Electron …