璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


tech:webserver:bash:ffmpeg

FFmpeg 使用

基本

ffmpeg -i ./xx.mp4 -hide_banner

转换不同格式

ffmpeg -i video.mp4 video.avi

FFmpeg 命令的典型语法是:

``` ffmpeg [全局选项] {[输入文件选项] -i 输入_url_地址} … {[输出文件选项] 输出_url_地址} … ```

使用示例

1、获取音频/视频文件信息

如果你不想看 FFmpeg 标语和其它细节,而仅仅想看媒体文件信息,使用 `-hide_banner` 标志,像下面。

$ ffmpeg -i video.mp4 -hide_banner

2、转换视频文件到不同的格式

直接使用转换后的后缀

$ ffmpeg -i video.mp4 video.avi

如果你想维持你的源视频文件的质量,使用 `-qscale 0` 参数:

$ ffmpeg -i input.webm -qscale 0 output.mp4

3、转换视频文件到音频文件

我转换一个视频文件到音频文件,只需具体指明输出格式,像 .mp3,或 .ogg,或其它任意音频格式。

上面的命令将转换 input.mp4 视频文件到 output.mp3 音频文件。

$ ffmpeg -i input.mp4 -vn output.mp3
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3

在这里,

  1. vn 表明我们已经在输出文件中禁用视频录制。
  2. ar 设置输出文件的音频频率。通常使用的值是22050 Hz、44100 Hz、48000 Hz。
  3. ac 设置音频通道的数目。
  4. ab 表明音频比特率。
  5. f 输出文件格式。在我们的实例中,它是 mp3 格式。

4、更改视频文件的分辨率

如果你想设置一个视频文件为指定的分辨率,你可以使用下面的命令:

$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4

上面的命令将设置所给定视频文件的分辨率到 1280×720。

5、压缩视频文件

减小媒体文件的大小到较小来节省硬件的空间总是一个好主意.

下面的命令将压缩并减少输出文件的大小。

$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4

请注意,如果你尝试减小视频文件的大小,你将损失视频质量。如果 24 太有侵略性,你可以降低 `-crf` 值到或更低值。

你也可以通过下面的选项来转换编码音频降低比特率,使其有立体声感,从而减小大小。

-ac 2 -c:a aac -strict -2 -b:a 128k

6、压缩音频文件

正像压缩视频文件一样,为节省一些磁盘空间,你也可以使用 `-ab` 标志压缩音频文件。

例如,你有一个 320 kbps 比特率的音频文件。你想通过更改比特率到任意较低的值来压缩它,像下面。

$ ffmpeg -i input.mp3 -ab 128 output.mp3

各种各样可用的音频比特率列表是:

  1. 96kbps
  2. 112kbps
  3. 128kbps
  4. 160kbps
  5. 192kbps
  6. 256kbps
  7. 320kbps

7、从一个视频文件移除音频流

如果你不想要一个视频文件中的音频,使用 `-an` 标志。

$ ffmpeg -i input.mp4 -an output.mp4

在这里,`-an` 表示没有音频录制。

上面的命令会撤销所有音频相关的标志,因为我们不要来自 input.mp4 的音频。

8、从一个媒体文件移除视频流

类似地,如果你不想要视频流,你可以使用 `-vn` 标志从媒体文件中简单地移除它。`-vn` 代表没有视频录制。换句话说,这个命令转换所给定媒体文件为音频文件。

下面的命令将从所给定媒体文件中移除视频。

$ ffmpeg -i input.mp4 -vn output.mp3

你也可以使用 `-ab` 标志来指出输出文件的比特率,如下面的示例所示。

$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3

9、从视频中提取图像

FFmpeg 的另一个有用的特色是我们可以从一个视频文件中轻松地提取图像。如果你想从一个视频文件中创建一个相册,这可能是非常有用的。

为从一个视频文件中提取图像,使用下面的命令:

$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png

在这里,

  1. r 设置帧速度。即,每秒提取帧到图像的数字。默认值是 25。
  2. f 表示输出格式,即,在我们的实例中是图像。
  3. image-%2d.png 表明我们如何想命名提取的图像。在这个实例中,命名应该像这样image-01.png、image-02.png、image-03.png 等等开始。如果你使用 `%3d`,那么图像的命名像 image-001.png、image-002.png 等等开始。

10、裁剪视频

FFMpeg 允许以我们选择的任何范围裁剪一个给定的媒体文件。

裁剪一个视频文件的语法如下给定:

ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4

在这里,

  1. `input.mp4` – 源视频文件。
  2. `filter:v` – 表示视频过滤器。
  3. `crop` – 表示裁剪过滤器。
  4. `w` – 我们想自源视频中裁剪的矩形的宽度。
  5. `h` – 矩形的高度。
  6. `x` – 我们想自源视频中裁剪的矩形的 x 坐标 。
  7. `y` – 矩形的 y 坐标。

比如说你想要一个来自视频的位置 (200,150),且具有 640 像素宽度和 480 像素高度的视频,命令应该是:

$ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4

请注意,剪切视频将影响质量。除非必要,请勿剪切。

11、使用开始和停止时间剪下一段媒体文件

可以使用开始和停止时间来剪下一段视频为小段剪辑,我们可以使用下面的命令。

$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4

在这里,

  1. `–s` – 表示视频剪辑的开始时间。在我们的示例中,开始时间是第 50 秒。
  2. `t` – 表示总的持续时间。

当你想使用开始和结束时间从一个音频或视频文件剪切一部分时,它是非常有用的。

类似地,我们可以像下面剪下音频。

$ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3

12、切分视频文件为多个部分

一些网站将仅允许你上传具体指定大小的视频。在这样的情况下,你可以切分大的视频文件到多个较小的部分,像下面。

$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4

在这里,

  1. `t 00:00:30` 表示从视频的开始到视频的第 30 秒创建一部分视频。
  2. `ss 00:00:30` 为视频的下一部分显示开始时间戳。它意味着第 2 部分将从第 30 秒开始,并将持续到原始视频文件的结尾。

13、接合或合并多个视频部分到一个

FFmpeg 也可以接合多个视频部分,并创建一个单个视频文件。

创建包含你想接合文件的准确的路径的 `join.txt`。所有的文件都应该是相同的格式(相同的编码格式)。所有文件的路径应该逐个列出,像下面。

file /home/sk/myvideos/part1.mp4
file /home/sk/myvideos/part2.mp4
file /home/sk/myvideos/part3.mp4
file /home/sk/myvideos/part4.mp4

现在,接合所有文件,使用命令:

$ ffmpeg -f concat -i join.txt -c copy output.mp4

如果你得到一些像下面的错误;

[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4'
join.txt: Operation not permitted

添加 `-safe 0` :

$ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4

上面的命令将接合 part1.mp4、part2.mp4、part3.mp4 和 part4.mp4 文件到一个称为 output.mp4 的单个文件中。

14、添加字幕到一个视频文件

我们可以使用 FFmpeg 来添加字幕到视频文件。为你的视频下载正确的字幕,并如下所示添加它到你的视频。

$ fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4

15、增加/减少视频播放速度

FFmpeg 允许你调整视频播放速度。

为增加视频播放速度,运行:

$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

该命令将双倍视频的速度。

为降低你的视频速度,你需要使用一个大于 1 的倍数。为减少播放速度,运行:

$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
/app/www/public/data/pages/tech/webserver/bash/ffmpeg.txt · 最后更改: 2023/03/23 13:02 由 温婕莺