From 071d61c38dff71e00357a8e34a0febdd0ac62e80 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Wed, 2 Nov 2022 13:17:14 +0000 Subject: [PATCH] feat: add `ffmpeg.md` cheatsheet (#18). f19dcdf8c4dfdeb33246301d25a68293e4b15b6b --- docs/ffmpeg.html | 199 +++++++++++++++++++++++++++++++++++++++++++++++ index.html | 4 + 2 files changed, 203 insertions(+) create mode 100644 docs/ffmpeg.html diff --git a/docs/ffmpeg.html b/docs/ffmpeg.html new file mode 100644 index 00000000..711f064e --- /dev/null +++ b/docs/ffmpeg.html @@ -0,0 +1,199 @@ + + + + +FFmpeg 备忘清单 + & ffmpeg cheatsheet & Quick Reference + + + + + + +

+ + +FFmpeg 备忘清单

+

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

+

参数参考

+

常用开关

+
-codecs   # 列出编解码器
+-c:v      # 视频编解码器(-vcodec)-'copy'复制流
+-c:a      # 音频编解码器(-acodec)
+-fs SIZE  # 限制文件大小(字节)
+
+

音频

+
-aq QUALITY  # 音频质量(特定于编解码器)
+-ar 44100    # 音频采样率 (Hz)
+-ac 1        # 音频通道(1=单声道,2=立体声)
+-an          # 没有音频
+-vol N       # 音量(256=正常)
+
+

比特率

+
-b:v 1M      # 视频比特率(1M = 1Mbit/s)
+-b:a 1M      # 音频比特率
+
+

视频

+
-aspect RATIO    # 纵横比(4:3、16:9 或 1.25)
+-r RATE          # 每秒帧率
+-s WIDTHxHEIGHT  # 帧大小
+-vn              # 没有视频
+
+

视频编辑

+ +

裁剪

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

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

+

缩放

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

剪切视频部分

+ +
$ 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
+
+ +

H265 2-pass 编码

+ +
$ ffmpeg -y -i <input> -c:v libx265 -b:v 2600k \
+  -x265-params pass=1 \
+  -an -f mp4 /dev/null && \
+    ffmpeg -i <input> \
+        -c:v libx265 -b:v 2600k \
+        -x265-params pass=2 \
+        -c:a aac -b:a 128k output.mp4
+
+ +

对于 H265 2-pass 编码,您需要组合 2ffmpeg 调用

+

视频比特率设置

+
$ ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
+
+

将输出文件的视频比特率设置为 64 kbit/s

+

固定旋转

+
$ ffmpeg -i <input> -c copy -metadata:s:v:0 rotate=90 <output>
+
+ +

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

+

视频帧速率

+
$ 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 file.mp4 -vn -acodec copy output.aac 
+
+ +

-vn(无视频)与 -acodec copy 结合起来。请注意,输出文件扩展名必须与输入文件中的音频编解码器匹配,-acodec copy 才能工作。

+

创建缩略图

+ +

在 10 秒时创建一个缩略图

+
$ ffmpeg -ss 10 -i <input file> -vframes 1 -vcodec png -an thumb.png
+
+ +

例如,要每 n 秒创建一次缩略图,请使用 -vf fps=1/n

+
$ ffmpeg -i <input file> -vf fps=1/60 thumbnails/thumb%03d.png
+
+ +

处理 id3 标签

+ +

提取

+
$ ffmpeg -i file.mp3 -f ffmetadata metadata.txt
+
+ +

设置

+
$ ffmpeg -i file.mp3 -acodec copy -metadata title="<title>" -metadata artist="<artist>" -metadata album="<album>" out.mp3
+
+ +

更多请查看

+

重新采样/转换音频

+
$ ffmpeg -i file.aac -acodec mp3 -ar 44100 -ab 128000 output.mp3
+
+ +

切换容器

+

将容器从 MKV 更改为 MP4

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

图片中的视频

+

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

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

将视频拆分为图像

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

另见

+ +
+ diff --git a/index.html b/index.html index f84020f2..578dbaf6 100644 --- a/index.html +++ b/index.html @@ -191,6 +191,10 @@ Emacs + + + +FFmpeg nginx