2017-03-04 14 views
0

私は並べて配置したい2つのビデオを持っています。私は両方のビデオが同じFPSを持っていると仮定して、私が各ビデオについて知っているフレーム番号でそれらを整列させたいと思います。フレーム番号は、次のコマンドを使用して検出されました。FFMPEGビデオを並べて、フレーム番号で並べ替えます

ffmpeg -i "input.mp4" "output/%08d.jpg" 

それでは、ビデオBのためのフレーム数は179である間、私はこれらの2つのフレームが裏地と並んでビデオ側を揃えたい、私はビデオAのために整列するフレーム数は126である知っているとしましょうビデオBフレーム179と同時にビデオAフレーム126を表示することになる。結果として得られるビデオは、いずれかのビデオからのピースを除去してはならないので、ビデオの1つが開始されていないか、またはが終了していない場合、結果のビデオは、両方のビデオが再生されるはずの時間だけではなく、アクティブなビデオを再生し続けます。私はまた両方のオーディオトラックを整列させたい。

この質問では、手動でいくつかの手順を実行するのではなく、調整したいビデオとフレーム番号を入力するだけの単一コマンドソリューションが好きです。

+0

両方のビデオは一定のフレームレートですか? – Mulvya

+0

@Mulvyaはい、どちらも同じフレームレートです。 –

答えて

1

使用

ffmpeg -i a.mp4 -i b.mp4 
-filter_complex 
    "[1]setpts=PTS-STARTPTS+d/FRAME_RATE/TB[b]; 
    [0][b]hstack[v]; 
    [1]adelay=dt|dt[ba]; 
    [0][ba]amix[a]" 
-map "[v]" -map "[a]" out.mp4 

dフレーム整列差によって交換する必要があり、後で開始されたビデオに適用されます。あなたのQでは、Aの#126はBの#179と位置合わせされるので、Aは53フレーム遅れるので、d=53です。私のコマンドは、ビデオとオーディオの遅延を2番目の入力に適用するので、をとsetptsadelay[0][1]で、hstackとamixに切り替えてください。

オーディオフレームレートが異なるため、時間の値は、ミリ秒でdtにする必要があります。 25fpsのビデオの53フレームのビデオ遅延は、53/25 = 2.12 (s) = 2120 (ms)

hstackの仕組みのためにオーディオ遅延に相当します。遅延されたビデオの最初のフレームは、再生を開始するまでフリーズして表示されます。最初に終了するビデオの最後のフレームと同じです。また、hstackフィルタでは、2つの動画の高さのディメンションが同じである必要があります。

+0

ビデオAが最初に開始された場合はどうすればいいですか?フレームの違いはマイナスになりますか? –

+0

私はそれを最初のパラでカバーします。 – Mulvya

+0

いいえ、私はこのエラーを受け取ります: [Parsed_adelay_2 @ 0x77b8c0]少なくとも1つの遅延> 0を指定する必要があります。 [Parsed_adelay_2 @ 0x77b8c0] Parsed_adelay_2の入力パッドの設定に失敗しました 複雑なフィルタの設定中にエラーが発生しました。 無効な引数 また、コマンドにバックスラッシュがあるはずですか?私はBashで実行しています。 –

関連する問題