
次のコマンドを実行しようとしています。これにより、ビデオに透かしが追加され、ビデオがアップスケールされるはずです。
ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1 -preset
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"
次のエラーが表示されます。
Filtergraph 'scale=854:-1' was specified through the
-vf/-af/-filter option for output stream 0:0, which is fed from
a complex filtergraph. -vf/-af/-filter and -filter_complex
cannot be used together for the same stream.
アップスケールを試みる前に (-vf scale=854:-1 なし)、コマンドは透かしを入れるために機能しました。
どうすれば両方を達成できるでしょうか?
私が試したことは何ですか?
- -vf パラメータを入力の前、入力の後などに移動する。
答え1
1つ使用できますフィルターグラフすべてのフィルタリングを実行するには:
ffmpeg -i input.avi -i logo.png -filter_complex \
"[0:v]scale=854:-2[scaled]; \
[scaled][1:v]overlay=5:5[out]" \
-map "[out]" -map 0:a -c:v libx264 -c:a copy output.mkv
[0:v]
は、最初の入力 (input.avi
この例では ) のビデオ ストリームを指します。 は、[1:v]
2 番目の入力 (この例では ) からのビデオですlogo.png
。オーディオは蒸気コピーこの例では、再エンコードされるのではなく、最初の入力にオーディオが含まれていると想定します。
ベスト プラクティスとしては、不適切なストリーム選択につながる可能性があるデフォルトに頼るのではなく、この例のようにフィルターの入力と出力に手動で名前を付けることが推奨されます。
-2
の中にスケールビデオフィルター-1
x264 では 4:2:0 クロマ サブサンプリングに出力する場合、出力が 2 で割り切れる必要があるため、の代わりに が使用されます。
値の 1 つが -n で n > 1 の場合、スケール フィルターは、指定された他の寸法から計算された入力画像のアスペクト比を維持する値も使用します。ただし、その後は、計算された寸法が n で割り切れるかどうかを確認し、必要に応じて値を調整します。