2012-02-15 10 views
20

HEADSHOT.MOVとSCREEN.MOVの2つのビデオがあります。それらは両方とも大きなファイルであり、縮小(サイズ、ビットレートなど)の両方を探しており、これらの2つを同じ、非常に幅の広いビデオフレームに並べて配置します。最終的な結果は、output_video.mp4を再生すると、両方の動画が同期して同じ速度で再生される非常に広いフレームを持つことになります。ここでFFMPEG 2 1フレームにトランスコードされたビデオが並んでいますか?

は私がやろうとしています何の構文上正しくないバージョンです:上記の例で

ffmpeg -i HEADSHOT.MOV -t 00:02:00 -acodec libfaac -ab 64k -vcodec libx264 -r 30 -pass 1 -s 374x210 -vf "movie=SCREEN.MOV [small]; [in][small] -an -r 30 -pass 1 -s 374x210 overlay=10:10 -t 00:02:00 [out]" -threads 0 output_movie.mp4 

、私はまた何ですか、別の質問を提起する2分間のテストムービー時間を設定してみましたさまざまな長さの2つの映画を扱う最善の方法(近い場合)私が役に立ったと評価しています

リソースは、これまでのところ、次のとおりです。

Multiple video sources combined into one

http://ffmpeg.org/ffmpeg.html#overlay-1

すべてのヘルプ/アドバイスは大歓迎です。私はFFMPEGの構文に問題があります!ありがとうございました!

答えて

29

結果は以下のようにスケール、パッド及びオーバーレイフィルタの組み合わせを用いて達成することができる:ここ

ffmpeg.exe -i LeftInput.mp4 -vf "[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; 
    movie=RightInput.mp4, scale=iw/3:ih/3, fade=out:300:30:alpha=1 [right]; 
    [left][right] overlay=main_w/2:0 [out]" -b:v 768k Output.mp4 

最初のビデオは半分に縮小し、元のサイズにパディングされます。 2番目のビデオは3分の2に縮小され、最初のビデオの右半分(パディング領域)にオーバーレイされます。

短いビデオはフェードアウトできます。それ以外の場合は、最後のフレームは合成されたビデオの最後まで表示されます。

結果ビットレートは-b:vオプションで設定できます。また、ビデオサイズと位置は、パッド、スケール、オーバーレイフィルタのピクセル単位で指定できます。

+0

ドミトリーありがとう、これは素晴らしいです。両方のビデオを共通のタイムコードにシークするための提案はありますか?私は[左]のために-ssを使うことができることを知っていますが、[right]のために見つけることができる唯一のフィルターはseek_pointですが、これはタイムコードへの参照ではなく数秒です。 setpts = [特定のタイムコードポイント]のようなものを使用することは可能ですか? 2つを同期するための他のアドバイスはありますか? – dcoffey3296

+6

ムービーフィルタ以外の入力パラメータを渡すには、代わりに-filter_complexを使用します。 -vfより柔軟です。たとえば、次のコマンドで同じ出力を得ることができます: 'ffmpeg.exe -i LeftInput.mp4 -i RightInput.mp4 -filter_complex" [0:v] scale = iw/2:ih/2、pad = 2 * iw:スケール= iw/3、フェード=アウト:300:30:アルファ= 1 [右]; [左] [右]オーバーレイ=メイン_w/2:0 [アウト] "-b:v 768k Output.mp4' –

+5

そして、ある映画が数秒後に始まったら何とか時間を同期することは可能ですか? –

関連する問題