0

ffmpeg を使用して、ビデオの最初の 3 秒間に透かしを追加する必要があります。これが私が今得たものです:

ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.png , select=lte(t\,3) [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4

ビデオを右に回転させ、ビデオの下部に最初の 3 秒間透かしを追加します。問題は、ビデオ全体で透かしが表示されることです。

その選択はまったく機能しないと思いました。次のコマンドを試しました

ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.png , select=0 [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4

透かしは表示されません。selectこれは正しく、フィルターが期待どおりに機能することを証明しています。私が理解しているように、これが ffmpeg の仕組みです。最短のビデオの最後のフレームが表示されたままになります。

N秒後にffmpegにshow watermarkを強制的に破棄させるにはどうすればよいですか?

4

1 に答える 1

1

自分で答えなければなりません。ffmpeg メーリング リストは、問題の解決に役立ちました。主なアイデアは、Apple Animation コーデック (透明度をサポート) を使用して既存の透かしをビデオに変換し、フェードフィルターを使用して作成されたビデオの最後のフレームをフェードアウトすることです。

例:

ffmpeg -loop 1 -i watermark.png -t 3 -c qtrle -vf 'fade=out:73:1:alpha=1' watermark.mov
ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.mov [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4

ffmpeg はオーバーレイされたビデオの最後のフレームを残りのビデオに使用するため、フェードアウトが必要です。このフィルターは、alpha=1パラメーターを介して最後のフレームを完全に透明にします。実際にはそうあるべきですがfade=out:74:1:alpha=1、私にはうまくいきませんでした。理由はわかりません

于 2013-03-19T19:47:57.010 に答える