地图
地图

FFmpeg笔记

Mac上面音频转换可以使用XLD,视频转换可以使用HandBrake

我只是偶尔需要使用视频转换功能,想要强大、免费的工具,非FFmpeg莫属,正好可以折腾一下。这玩意是真的复杂,也确实强大,必须写一篇博客记录,以备使用时查询。

运行环境:

1
2
macOS 10.14.6
ffmpeg: stable 4.2.2

一、在Mac上安装FFmpeg

这里是官方文档,里面提到了安装FFmpeg的三种方法:

  1. Homebrew

  2. 直接下载静态版本的FFmpeg

    • 优点:直接运行使用
    • 缺点:手动升级,可能不包含所需的所有编码器或过滤器
  3. 自己编译,下载源码,运行./configure,进行makemake install

    • 优点:貌似没有优点,可能能够体会一把自己掌握的控制感
    • 缺点:需要手动设置配置选项,还需要自己安装第三方库

第3种方法不推荐。第2种方法可以考虑,下载之后移到/usr/local/bin就可以使用,需要升级就手动下载新版,覆盖原来的即可。还需要注意,这可能是个“基础版”的FFmpeg,不包含某些高级功能。

在 Mac 上,凡是跟命令行相关的包,推荐统一用Homebrew,便于管理和更新。首先需要安装Xcode和命令行工具xcode-select --install,然后安装Homebrew

注意:如果使用brew install ffmpeg安装,得到的也是一个“基础版”的FFmpeg,基础版和高级版所包含库的区别:

下面是Homebrew安装FFmpeg的过程:,“高级版”的FFmpeg,Homebrew官方不提供,需要用到第三方homebrew-ffmpeg

  1. 完全安装

    • brew tap homebrew-ffmpeg/ffmpeg
    • brew install homebrew-ffmpeg/ffmpeg/ffmpeg
  2. 选项安装

    • 查看选项 brew options homebrew-ffmpeg/ffmpeg/ffmpeg
    • 安装 brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-<option1> --with-<option2> ...
  3. 更新

    • brew update && brew upgrade homebrew-ffmpeg/ffmpeg/ffmpeg


安装成功截图,


二、FFmpeg的常见用法

首先是官方文档,有啥不懂的基本能找到答案,就是成本有点高。

ffmpeg通用语法格式:

ffmpeg [全局选项] {[输入文件参数] -i 输入文件} ... {[输出文件参数] 输出文件} ...

  • ffmpeg -formats 支持的格式
  • ffmpeg -codecs 支持的编码
  • ffmpeg -encoders 支持的编码器

  1. 获取媒体文件信息

    1. ffmpeg -i video.mp4 详细信息

    2. ffmpeg -i video.mp4 -hide_banner 省略FFmpeg细节,仅显示媒体信息

    • 注意:文件名有空格或者特殊字符,使用双引号" "将文件名包起来


  2. 视频转换

    1. 从flv转到mp4

      • ffmpeg -i input.flv -c copy output.mp4
    2. 从GIF转mp4

      • ffmpeg -i 1.gif -vf scale=600:-2,format=yuv420p out.mp4

  3. 剪切

  • ffmpeg -i input.mp4 -ss 00:01:30 -to 00:10:00 -c copy output.mp4

  • -ss 开始时间
  • -to 结束时间
  • -t 持续时间
  • -c copy 直接复制,不经过重新编码,这样比较快

  1. 合并

创建1.txt,所有的文件都应该是相同的格式(相同的编码),所有文件的路径应该逐个列出:

1
2
3
4
file /Users/yang/Desktop/part1.mp4
file /Users/yang/Desktop/part2.mp4
file /Users/yang/Desktop/part3.mp4
file /Users/yang/Desktop/part4.mp4

然后拼接所有文件:
ffmpeg -f concat -i 1.txt -c copy output.mp4

  1. 视频提取音频
  • ffmpeg -i input.mp4 -vn -c:a copy output.aac
  • ffmpeg -i input.mp4 -vn -ar 44100 -ab 320 -ac 2 -f mp3 output.mp3

  • -vn 在输出文件中移除视频流
  • -c:a copy 不改变编码,直接拷贝
  • -ar 设置输出音频频率,常用 22050 Hz, 44100 Hz, 48000 Hz
  • -ab 设置音频比特率,常用 128 kbps, 160 kbps, 192 kbps, 256 kbps, 320 kbps
  • -ac 设置音频通道数目
  • -f 输出文件格式

  1. 截图
  • ffmpeg -i input.mp4 -ss 00:01:29 -t 00:00:05 -vf fps=1 /Users/yang/Desktop/output-%d.png
  • 00:01:29开始,每隔1秒截一张图,持续00:00:05秒,输出到桌面

  • ffmpeg -i input.mp4 -ss 00:00:14 -t 00:00:01 -y output-%d.png

  • 00:00:14开始截图,1秒内所有帧

  • ffmpeg -i input -ss 00:01:30 -vframes 1 output.png

  • 截取00:01:30的那1帧

持续更新常用命令当作备忘录……