From fc80933b4b5f7df1882fe27821d4afe9e247db8a Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Wed, 2 Nov 2022 13:56:54 +0000 Subject: [PATCH] doc: update `ffmpeg.md` (#18). 40d15647e0450a7943d0521b7c09eaf7ed56bd41 --- docs/ffmpeg.html | 57 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/docs/ffmpeg.html b/docs/ffmpeg.html index 711f064e..e72e32d6 100644 --- a/docs/ffmpeg.html +++ b/docs/ffmpeg.html @@ -41,7 +41,7 @@

本备忘清单是 FFmpeg 中常见视频处理操作的备忘清单

参数参考

常用开关

-codecs   # 列出编解码器
 -c:v      # 视频编解码器(-vcodec)-'copy'复制流
@@ -67,19 +67,37 @@
 

视频编辑

-

裁剪

+

裁剪

+
$ ffmpeg -i <input> -filter:v "crop=640:480:100:25" <output>
 

通过从输入视频中复制偏移 x=100px y=25px 的相应窗口来创建 640x480 大小的输出视频

+
# 裁剪到宽度 360,高度 640
+$ ffmpeg -i input.mov -filter:v 'crop=360:640:0:0' -codec:a copy output.mov
+
+ +

裁剪到宽度 360,高度 640,从坐标 (10, 20) 开始

+
$ ffmpeg -i input.mov -filter:v 'crop=360:640:10:20' -codec:a copy output.mov
+
+

缩放

$ ffmpeg -i <输入> -vf scale=640:480 <输出>
 
+

视频帧速率

+
$ ffmpeg -i input.avi -r 24 output.avi
+
+

将输出文件的帧速率强制为 24 fps

+
$ ffmpeg -r 1 -i input.m2v -r 24 output.avi
+
+

将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fps

剪切视频部分

$ ffmpeg -i <input> -ss 00:01:45 -t 00:02:35 -vcodec copy -acodec copy <output>
 $ ffmpeg -ss 00:00:30 -i orginalfile.mpg -t 00:00:05 -vcodec copy -acodec copy newfile.mpg
+# 从 4.5 秒开始的 5 秒长的视频
+$ ffmpeg -i in.mp4 -ss 4.5 -t 5 out.mp4
 

H265 2-pass 编码

@@ -103,13 +121,14 @@

不要为旋转重新编码,而是简单地为旋转角度添加一个视频元数据字段

-

视频帧速率

-
$ ffmpeg -i input.avi -r 24 output.avi
+

放慢视频速度

+
$ ffmpeg -i in.mp4 -filter:v "setpts=4.0*PTS" out.mp4
 
-

将输出文件的帧速率强制为 24 fps

-
$ ffmpeg -r 1 -i input.m2v -r 24 output.avi
+

使用过滤器减慢视频。 此示例将视频减慢四倍

+

缩放到特定宽度

+
$ ffmpeg -i in.mp4 -filter:v scale="538:trunc(ow/a/2)*2" -c:a copy out.mp4
 
-

将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fps

+

给定所需的视频宽度,例如 538 像素,您可以使用以下方法将视频调整为该宽度,同时保持宽高比

重新包装

提取音频流

$ ffmpeg -i file.mp4 -vn -acodec copy output.aac 
@@ -141,11 +160,25 @@
 
$ ffmpeg -i file.aac -acodec mp3 -ar 44100 -ab 128000 output.mp3
 
-

切换容器

+

切换容器(转换类型)

+

将容器从 MKV 更改为 MP4

$ ffmpeg -i file.mkv -acodec copy -vcodec copy file.mp4
 
+

要将视频从 .mov 更改为 .mp4

+
$ ffmpeg -i in.mov out.mp4
+
+

音视频同步

+ +

将音频延迟 3 秒

+
$ ffmpeg -i input.mov -itsoffset 3 -i input.mov -map 0:v -map 1:a -codec:a copy -codec:v copy output.mov
+
+ +

将视频延迟 3 秒(即将音频提前 3 秒)

+
$ ffmpeg -i input.mov -itsoffset 3 -i input.mov -map 1:v -map 0:a -codec:a copy -codec:v copy output.mov
+
+

图片中的视频

如果您有多个编号的图像 image1.jpg、image2.jpg... 像这样从它们创建一个视频

$ ffmpeg -f image2 -i image%d.jpg video.mp4
@@ -154,6 +187,14 @@
 

将视频拆分为图像

$ ffmpeg -i video.mp4 image%d.jpg
 
+

转换为 Gif

+ +
$ ffmpeg -ss 2 -t 28 -i input.mp4 \
+    -vf "fps=10,scale=1080:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
+    -loop 0 output.gif
+
+ +

有关更多信息,请参阅 StackOverflow 问题

另见