FFMPEGでは、時間の経過とともにスケールを変更できますか?


11

わかりましたので、オーバーレイフィルターを使用して、「t」変数を使用することで、時間の経過とともにビデオのx / y位置を変更できます。たとえば、overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=02秒が経過した後、オーバーレイされた要素を左上から右上にスライドし始めるために使用できます。

私がやりたいことは、要素のスケーリングに同様の原則を使用することです。表現(など、scale=w=iw*tその行に沿ったもの)を使用して、時間の経過とともにビデオのスケールを変更できるようにしたいと思います。

これは可能ですか?

その式を-filter_complexで実行すると、

式 'iw * t'の評価中にエラーが発生しました。

たぶん、out_w: 'iw * t'またはout_h: '-1'の式は自己参照です。

この機能を使用したい場合は、FFMpegにパッチを適用する必要がある可能性がかなりあるように感じますが、この種のことを誰かが知っているかどうかを確認するために、最初に質問したいと思いました!

そのようなタスクがどのように達成されるかを誰かが知っていますか?

助けてくれてありがとう!


今のところ構文エラーのように聞こえますが、その機能を以前に使用したことがないので、残念ながらここではあまり役に立ちません。
PTS

1
オーバーレイフィルターに関しては、tは定義されたものではありません。
v010dya 14

1
あなたは可能性だけでフィルタを作成します。wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello

1
@alexspellerスケールフィルターはタイムラインの編集をサポートしていないため、直接はできません。回避策があるかどうかを確認します。
ギャン2017

1
H.264 / 5出力で技術的に可能です。プレーヤー/編集者がそれをどのように処理するのかわからない。
ギャン2017

回答:


2

私が理解していることから、「t」は一度評価されます。これを読んだことがありますか:https : //ffmpeg.org/ffmpeg-filters.html#zoompan

Ffmpegドキュメント:

9.170.1例

  • 最大1.5倍にズームインし、同時に画面の中央近くのスポットにパンします。

zoompan = z = 'min(zoom + 0.0015,1.5)':d = 700:x = 'if(gte(zoom、1.5)、x、x + 1 / a)':y = 'if(gte(zoom、 1.5)、y、y + 1) ':s = 640x360

  • 最大1.5倍にズームインし、常に画像の中央でパンします。

zoompan = z = 'min(zoom + 0.0015,1.5)':d = 700:x = 'iw / 2-(iw / zoom / 2)':y = 'ih / 2-(ih / zoom / 2)'

  • 上記と同じですが、一時停止しません。

zoompan = z = 'min(max(zoom、pzoom)+0.0015,1.5)':d = 1:x = 'iw / 2-(iw / zoom / 2)':y = 'ih / 2-(ih /ズーム/ 2) '

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.