コマンドラインツールを使用して2つのビデオ間でシームレスで繰り返し可能なトランジションを作成するには?

コマンドラインツールを使用して2つのビデオ間でシームレスで繰り返し可能なトランジションを作成するには?

2つのビデオを入力として使用して、2つのビデオが毎秒スムーズで繰り返しの方法で互いにフェード(またはディゾルブ)されるビデオを出力したいと思います。 、または他の同様のツールffmpegとの組み合わせによって、私が望む効果を得ることができると仮定します。基本的に、特定の時間間隔に基づいてビデオAを切り取り、1秒あたりのカットを(自動的に)削除したいと思います。ビデオBの場合も同様ですが、この場合は破棄された部分を維持するためにプロセスが逆になります。私はこれらの部分を一つに編むことを願っています。meltmkvmergeffmpeg

上記のツールのいずれかに従って、ワイルドカードコマンド引数またはバッチリストを使用して結果を関連付けることができるように、ファイル名は正しい形式でなければなりません。変換効果(例えば、「遅延ディゾルブ」)は必ずしも必要ではありませんが、これを達成するためのフィルタもあれば良いでしょう。最後に、このプロセスが完了したらいいと思います。録音がほとんどまたはまったく必要ありません、ビデオ品質を維持するため。

私はすべて読んだこのスレッドそしてMeltフレームワーク文書、ffmpegマニュアルに加えて。

答え1

2つのビデオの解像度とサンプルのアスペクト比が同じであると仮定すると、次のことができます。ミックスffmpegでフィルタリングします。

いくつかの例を挙げると、


ffmpeg -i videoA -i videoB -filter_complex \
       "[0][1]blend=all_expr=if(mod(trunc(T),2),A,B);\
        [0]volume=0:enable='mod(trunc(t+1),2)'[a]; [1]volume=0:enable='mod(trunc(t),2)'[b];\
        [a][b]amix"  out.mp4

ストレートカット。

出力:

time,  in seconds,
[0,1) -> videoB
[1,2) -> videoA
[2,3) -> videoB
...
[2N  ,2N+1) -> videoB
[2N+1,2N+2) -> videoA

ffmpeg -i videoA -i videoB -filter_complex \
       "[0][1]blend=all_expr='if(mod(trunc(T/2),2),min(1,2*(T-2*trunc(T/2))),max(0,1-2*(T-2*trunc(T/2))))*A+if(mod(trunc(T/2),2),max(0,1-2*(T-2*trunc(T/2))),min(1,2*(T-2*trunc(T/2))))*B';\
        [0]volume='if(mod(trunc(t/2),2),min(1,2*(t-2*trunc(t/2))),max(0,1-2*(t-2*trunc(t/2))))':eval=frame[a]; [1]volume='if(mod(trunc(t/2),2),max(0,1-2*(t-2*trunc(t/2))),min(1,2*(t-2*trunc(t/2))))':eval=frame[b];\
        [a][b]amix"  out.mp4

各入力ビデオ/オーディオは2秒間続き、切り替え時間は0.5秒です。

出力:

time,  in seconds,
[0,0.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[0.5,2) -> videoB
[2,2.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[2.5,4) -> videoA
[4,4.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[4.5,6) -> videoB
[6,6.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[6.5,8) -> videoA
...
[4N    ,4N+0.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[4N+0.5,4N+2)   -> videoB
[4N+2  ,4N+2.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[4N+2.5,4N+4)   -> videoA

答え2

あなたの質問は非常にあいまいです。認めますが、可能なツールのいくつかを使い始めましたが、詰まったり圧倒されました。したがって、私は最終的な解決策よりも方向を提示したいと思います。

MLT必要なツールです。フードの下でffmpegと他のツールを使用してください。ただし、必要なすべての構成をMLT(XML)構成ファイルに入れることはできます。

Melting Frame Web ページの上部を見ると、次のメモが表示されます。

MLTを試して学ぶ最も簡単な方法はダウンロードすることです。ショット編集

これを行い、Shotcutに慣れるのに時間を費やすことをお勧めします。他のMLTベースのエディタとは異なり、ShotcutはMLT設定ファイルをプロジェクトファイルとして直接使用します。

Shotcutを使用して2つのビデオをマージし、各ビデオのクリップを交換することをお勧めします。次にプロジェクトを保存し、テキストエディタで開きます。その後、独自のMLT構成ファイルを構築する方法の例として使用できます。

関連情報