JiFu's Wiki JiFu's Wiki
首页
  • HTML
  • JavaScript
  • NodeJS
  • Vuejs
  • 微信小程序
  • Python
  • 数据库
  • 中间件
  • 算法
  • 软件工程
  • Wordpress
  • iOS开发
  • Android开发
  • Linux
  • Windows
  • MacOS
  • Docker
  • Vim
  • VSCode
  • Office
  • 其他
  • Photoshop
  • Sketch
  • Mac
  • 游戏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • HTML
  • JavaScript
  • NodeJS
  • Vuejs
  • 微信小程序
  • Python
  • 数据库
  • 中间件
  • 算法
  • 软件工程
  • Wordpress
  • iOS开发
  • Android开发
  • Linux
  • Windows
  • MacOS
  • Docker
  • Vim
  • VSCode
  • Office
  • 其他
  • Photoshop
  • Sketch
  • Mac
  • 游戏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • DevOps介绍
  • Linux

  • MacOS

  • Windows

  • Docker

  • Vim

  • VSCode

  • Office

  • 其他

    • Wiki.js安装手册
    • Vuepress手册
    • git submodule在项目中的使用
    • ffmpeg命令手册
      • 转换为 MP4
      • 转换为 WebM
      • 转换为 Ogg
      • 转换为 GIF
      • 保持原始编码
      • 移除音轨
      • 将第 99 帧导出为图像
      • 5秒导出一帧到一张图片
      • 从源文件中剪切特定范围
      • 调整视频大小
      • 改变视频播放速度
      • 设置每秒帧数(FPS)
      • 合并多个视频
      • 设置画面组(GOP)
      • 复制源媒体的元数据
    • git pre-commit使用
    • alfred插件推荐
    • Git中.gitignore无效的解决办法
    • Git忽略提交规则 - .gitignore配置总结
    • screenFetch 命令行信息截图工具
    • Axel:命令行下轻量级多线程下载程序
    • Inxi:一个功能强大的获取 Linux 系统信息的命令行工具
    • Linux下Aria2下载器的安装及配置
    • Chrome浏览器怎么清理单个页面缓存
    • MacOS软件私人配置
  • 运维
  • 其他
JiFu
2024-03-26
目录

ffmpeg命令手册

ffmpeg由Fabrice Bellard创建,他与QEMU和QuickJS ( JSLinux背后的引擎)的创建者相同。 本文介绍了许多不同的 ffmpeg 用例,假设读者具有该软件的基本知识。您将在本文中看到各种实际示例。更多详细信息,请参考官方文档页面。 尽管它们以多行形式呈现,但以下所有示例都是一行。只需将它们复制并粘贴到您的终端中,然后按 Enter。

# 编解码器选项

ffmpeg 支持的可用编解码器非常多。以下示例是一些最流行的组合,已在许多不同的商业项目中使用。

# 转换为 MP4

linuxmi@linuxmi /home/linuxmi/linuxmi.com
⚡ ffmpeg -i linuxmi.mov -c:v libx264 -c:a aac linuxmi.con.mp4
1
2

libx264是最流行的 H.264 编码器之一。libx264+aac组合支持 IE11。使用-crf选项来控制输出质量。

# 转换为 WebM

linuxmi@linuxmi /home/linuxmi/linuxmi.com
⚡ ffmpeg -i linuxmi.mov \
  -c:v libvpx-vp9 -crf 31 -b:v 1M \
  -c:a libvorbis \
linuxmi.webm
1
2
3
4
5

-crf代表恒定速率因子。libvpx没有默认的 CRF 值。-crf 31用于 1080p 通常被认为足够好了,而它可以接受 0(无损)和 63(最差质量)之间的任何数字。供您参考,libx264的默认值为 28,范围从 0 到 51。 -b:v是比特率的一个选项。值1M与1000k 相同。

# 转换为 Ogg

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
⚡ ffmpeg -i linuxmi.mov \
  -c:v libtheora -q:v 5 \
  -c:a libvorbis -q:a 5 \
linuxmi.ogg
1
2
3
4
5

-q:v(视频)和-q:a(音频)是可变比特率 (VBR) 质量级别的选项。取值范围是 1-31,其中 1 是最高质量,31 是最低质量。或者,它们分别与-qscale:v和-qscale:a相同。

# 转换为 GIF

ffmpeg -i linuxmi.mov \
  -vf " \
    scale=960:-1, \
    fps=16, \
    split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse
  " \
  -loop 0 \
linuxmi.gif
1
2
3
4
5
6
7
8

# 保持原始编码

ffmpeg -i linuxmi.mov -c copy linuxmi.com.mov
1

这会创建源文件的副本。

# 移除音轨

ffmpeg -i linuxmi.mov -c:v copy -an linuxmi.mp4
1

-an用于删除音轨,同时通过-c:v copy选项保留视频轨道。

# 将第 99 帧导出为图像

ffmpeg -i linuxmi.mov \
  -vf "select=eq(n\, 98)" -vframes 1 \
  linuxmi.png
1
2
3

由于帧数从 0 开始,所以选项应该是"select=eq(n, 98)",而不是"select=eq(n, 99)"。

# 5秒导出一帧到一张图片

ffmpeg -i linuxmi.mov -ss 00:05:00 -vframes 1 linuxmi.png
1

# 高级编辑功能

您可以将以下选项与上述任何编解码器设置结合使用。

# 从源文件中剪切特定范围

ffmpeg -i linuxmi.mov \
  -ss 00:05:00 -t 12 \
linuxmi.mp4
1
2
3

输出文件将从源文件的 5 分钟开始,最大长度为 12 秒,这意味着如果源文件长于该时间,则输出视频将在源视频的 00:05:12 结束。 或者,-ss 00:05:00 -to 00:05:12或-ss 300 -t 12可用于相同的结果。-ss可以不带-t选项使用。

# 调整视频大小

调整为 1920x1080

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
⚡ ffmpeg -i linuxmi.mov \ -vf "scale=1920:1080" \ linuxmi.mp4
1
2

将宽度调整为 1920 保持源比率

ffmpeg -i linuxmi.mov \
  -vf "scale=1920:-1" \
1
2

将宽度调整为 1920,但使用黑色填充将高度设置为 2160

ffmpeg -i linuxmi.mov \
  -vf "scale=1920:-1, pad=1920:2160:-1:-1:color=black" \
linuxmi.mp4
1
2
3

# 改变视频播放速度

快 2 倍

ffmpeg -i linuxmi.mov \
  -vf "setpts=PTS/2" \
  -af "asetpts=PTS/2" \
linuxmi.mp4
1
2
3
4

1/2x 速度

ffmpeg -i linuxmi.mov \
  -vf "setpts=PTS/.5" \
  -af "asetpts=PTS/.5" \
linuxmi.mp4
1
2
3
4

PTS代表演示时间戳。您可以通过分别在视频过滤器 ( -vf) 和音频过滤器 ( -af)上给出不同的数字来应用不同的视频和音频速度。

# 设置每秒帧数(FPS)

ffmpeg -i linuxmi.mov -vf "fps=30" linuxmi.mp4
1

# 合并多个视频

ffmpeg -safe 0 -f concat \
  -i <( \
    for f in $PWD/*.@(mov|mp4); do \
      printf "file ${f}\n"; \
    done; \
  ) \
  -c copy \
linuxmi.mov
1
2
3
4
5
6
7
8

上面的命令将当前目录中的所有 .mov 和 .mp4 文件合并并创建output.mov文件。所有视频必须具有相同的尺寸比以避免拉伸或变形。

# 设置画面组(GOP)

GOP(Group of Pictures)策略影响编码质量,所谓GOP,意思是画面组,一个GOP就是一组连续的画面。

ffmpeg -i linuxmi.mov -g 300 linuxmi.mp4
1

GOP 表示两个关键帧之间的距离。

# 复制源媒体的元数据

ffmpeg -i source.mov \
  -map_metadata 0 -movflags use_metadata_tags \
linuxmi.mp4
1
2
3

由于某些视频存储自定义元数据,此命令可能无法正确复制所有数据。 如果要检查元数据,请安装exiftool并运行:

exiftool -g1 -a -s -gps* linuxmi.mp4`
1

或者,您可以使用 exiftool 复制元数据,如下所示:

exiftool -tagsFromFile linuxmi.mov -All:All linuxmi.mp4
1
#命令#ffmpeg
上次更新: 2024/07/25, 21:16:23
git submodule在项目中的使用
git pre-commit使用

← git submodule在项目中的使用 git pre-commit使用→

最近更新
01
Disable notification "to get future google chrome updates you'll need macos 10.13 or later" on mac
05-14
02
MacOS软件推荐
04-30
03
Debian Sway开发机安装手册
03-26
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Ji Fu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式