filter_complex
私はブレンドフィルターとを使用して、ある画像を別の画像にクロスフェードしたmp4を作成しようとしています。この答え。
しかし、ブレンドする前に両方の画像を 480p に拡大縮小したいです。使用するコマンドは次のとおりです。
ffmpeg \
-loop 1 -t 1 -i field.jpg \
-loop 1 -t 1 -i island.jpg \
-filter_complex \
"[0:v]scale=hd480[v0]; \
[1:v]scale=hd480[v1]; \
[v1][v0]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[v0][b1v][v1]concat=n=3:v=1:a=0 [v]" -map "[v]" -threads 0 -preset ultrafast -y out.mp4
ただし、次の出力で concat が失敗するようです。
Input #0, image2, from 'field.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 409918 kb/s
Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 4000x2000 [SAR 72:72 DAR 2:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, image2, from 'island.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 252593 kb/s
Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 4000x2000 [SAR 72:72 DAR 2:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
[swscaler @ 0x57425e0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x577e4a0] deprecated pixel format used, make sure you did set range correctly
[Parsed_concat_3 @ 0x59c1c20] Input link in1:v0 parameters (size 852x480, SAR 80:71) do not match the corresponding output link in0:v0 parameters (4000x2000, SAR 72:72)
[Parsed_concat_3 @ 0x59c1c20] Failed to configure output pad on Parsed_concat_3
Error configuring complex filters.
Invalid argument
どちらの画像も4000x2000ピクセルです。フィールド.jpgそして島.jpg。
ご協力いただければ幸いです。最近のナイトリービルドを使用しています:
ffmpeg version N-81188-gcebad64-static
答え1
使用
ffmpeg -loop 1 -t 1 -i field.jpg -loop 1 -t 1 -i island.jpg
-filter_complex "[0:v]scale=-2:480,split[v0][cv0];
[1:v]scale=-2:480,split[v1][cv1];
[v1][v0]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v];
[cv0][b1v][cv1]concat=n=3:v=1:a=0 [v]" -map "[v]" -threads 0 -preset ultrafast -y out.mp4
フィルター コンプレックス内で生成された入力パッドは、1 回しか使用できません。そのため、連結用に 1 つのコピーを生成するために分割を配置しました。また、-2:480
アスペクト比を維持するためにスケールを に変更しました。 に戻すこともできますhd480
が、アスペクト比フラグを考慮しない Web プレーヤーでは、ビデオが歪んで表示されます。