ffmpeg 根据视频大小缩放徽标大小
ffmpeg scale logo size according to video size
我有一个 ffmpeg 命令,它可以很好地在视频的左上角和右下角插入 2 个图像。
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png -filter_complex \
"[0:v][1:v]overlay=20:20[bkg]; \
[bkg][2:v]overlay=(main_w-overlay_w)-20:(main_h-overlay_h)-20" \
-codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out1.mp4
此命令适用于 720x480 等大尺寸视频,但是当输入视频尺寸为 320x240 尺寸时,它将覆盖一半的视频尺寸。
1.png尺寸为:160x100
2.png尺寸为:341x44
知道如何将 scale2ref 合并到上面的命令中吗?
一直在尝试这个 的解决方案,到目前为止没有成功。
更新 1: 我从 here
找到了这个命令
ffmpeg -i ori.mp4 -y -i 1.png \
-filter_complex "[1:v][0:v]scale2ref=iw*0.25:-1[logo1][base]; \
[base][logo1]overlay=20:20[v]" -map [v] -map 0:a \
-codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out2.mp4
该命令可以很好地缩放一张图像。
更新 2:
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png \
-filter_complex "[1:v][0:v]scale2ref=iw*0.25:-1[logo1][base];\
[base][logo1]overlay=20:20[v];[2:v][0:v]scale2ref=iw*0.30:-1[logo2][base2];\
[base2][logo2]overlay=(main_w-overlay_w)-20:(main_h-overlay_h)-20[v]" \
-map [v] -map 0:a -codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out4.mp4
以上都试过了,没用。出现这样的错误
Filter overlay has an unconnected output
任何帮助都会很棒
使用
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png -filter_complex \
"[1:v][0:v]scale2ref=160/100*oh:ih/5[v1][bk1];[bk1][v1]overlay=20:20[bkg]; \
[2:v][bkg]scale2ref=341/44*oh:ih/11[v2][bk2];[bk2][v2]overlay=W-w-20:H-h-20" \
-c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out1.mp4
我有一个 ffmpeg 命令,它可以很好地在视频的左上角和右下角插入 2 个图像。
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png -filter_complex \
"[0:v][1:v]overlay=20:20[bkg]; \
[bkg][2:v]overlay=(main_w-overlay_w)-20:(main_h-overlay_h)-20" \
-codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out1.mp4
此命令适用于 720x480 等大尺寸视频,但是当输入视频尺寸为 320x240 尺寸时,它将覆盖一半的视频尺寸。
1.png尺寸为:160x100
2.png尺寸为:341x44
知道如何将 scale2ref 合并到上面的命令中吗?
一直在尝试这个
更新 1: 我从 here
找到了这个命令ffmpeg -i ori.mp4 -y -i 1.png \
-filter_complex "[1:v][0:v]scale2ref=iw*0.25:-1[logo1][base]; \
[base][logo1]overlay=20:20[v]" -map [v] -map 0:a \
-codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out2.mp4
该命令可以很好地缩放一张图像。
更新 2:
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png \
-filter_complex "[1:v][0:v]scale2ref=iw*0.25:-1[logo1][base];\
[base][logo1]overlay=20:20[v];[2:v][0:v]scale2ref=iw*0.30:-1[logo2][base2];\
[base2][logo2]overlay=(main_w-overlay_w)-20:(main_h-overlay_h)-20[v]" \
-map [v] -map 0:a -codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out4.mp4
以上都试过了,没用。出现这样的错误
Filter overlay has an unconnected output
任何帮助都会很棒
使用
ffmpeg -i ori.mp4 -y -i 1.png -i 2.png -filter_complex \
"[1:v][0:v]scale2ref=160/100*oh:ih/5[v1][bk1];[bk1][v1]overlay=20:20[bkg]; \
[2:v][bkg]scale2ref=341/44*oh:ih/11[v2][bk2];[bk2][v2]overlay=W-w-20:H-h-20" \
-c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
-c:a aac -strict -2 out1.mp4