From 774856fd2e8d0f132d43ae08ffae17e4cb12cd44 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Mon, 7 Nov 2022 11:50:54 +0000 Subject: [PATCH] doc: update `ffmpeg.md`. (#24) e48fd74c38d9781ac56580b31ac811baeb195719 --- CONTRIBUTORS.svg | 18 +++++++-------- docs/ffmpeg.html | 59 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTORS.svg b/CONTRIBUTORS.svg index 4e9761d1..aafaa65c 100644 --- a/CONTRIBUTORS.svg +++ b/CONTRIBUTORS.svg @@ -8,15 +8,15 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/docs/ffmpeg.html b/docs/ffmpeg.html index 9b244d21..b0b8a760 100644 --- a/docs/ffmpeg.html +++ b/docs/ffmpeg.html @@ -42,7 +42,7 @@

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

FFmpeg 参考

安装

Linux

@@ -525,6 +525,63 @@
$ ffmpeg -i audioS.mp4 -i videoS.mp4 -c copy -map 0:a -map 1:v outFil­e.mp4
 
+

合并视频

+ +

合并相同规格(解码/分辨率/帧率)视频

+
# mylist.txt >>>
+file '1.mp4'
+file '2.mp4'
+file '3.mp4'
+
+# 这些文件是相对路径,如使用绝对路径需要添加 `-safe 0` 参数
+$ ffmpeg -f concat -i mylist.txt -c copy output.mp4
+
+ +

合并当前目录下所有视频

+
$ ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4
+
+

合并不同规格视频,保证视频不变形

+
$ ffmpeg -i 1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts tmp1.ts
+$ ffmpeg -i 2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts tmp2.ts
+$ ffmpeg -i 3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts tmp3.ts
+
+$ ffmpeg -threads 2 -i "concat:tmp1.ts|tmp2.ts|tmp3.ts"  -vf "scale=720:1080:force_original_aspect_ratio=decrease,pad=720:1080:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuvj420p -shortest -y output.mp4
+
+ +

合并不同解码视频

+
$ ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \
+-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
+-map "[outv]" -map "[outa]" output.mkv
+
+ +

合并视频并重新编码音频

+
$ ffmpeg -f concat -i mylist.txt -c:v copy -c:a flac -strict -2 output.mp4
+
+ +

合并音频与图片

+

合并多个音频,自定义背景图片,生成视频音乐

+
# mylist.txt >>>
+file '1.mp3'
+file '2.mp3'
+file '3.mp3'
+
+# OBS: 46500 = 25:50 minutes * 60 * 30fps
+# echo "00:25:50" | awk -F: '{ print (($1 * 3600) + ($2 * 60) + $3) * 30 }'
+$ ffmpeg -y -loop 1 -i cover.jpg -f concat -i mylist.txt -c:v libx264 -r 30 -pix_fmt yuv420p -vframes 46500 -c:a aac -b:a 192k -strict experimental -shortest output.mp4
+
+ +

添加水印

+

在视频左上方 20,20 的位置插入 logo.png 图片

+
# -b:v 548k 可选参数,设置视频比特率,默认 200k 最好设置与原视频一致
+ffmpeg -i 1.mp4 -acodec copy -b:v 548k -vf "movie=logo.png[watermark];[in][watermark]overlay=20:20" output.mp4
+
+ +

去除水印

+

设置一个矩形覆盖区域 x=10:y=10:w=120:h=45

+
# show=1 为可选参数,设置显示边框,方便调试用的
+ffmpeg -i 1.mp4 -b:v 548k -vf delogo=x=10:y=10:w=120:h=45:show=1 output.mp4
+
+

另见