2016-08-03 40 views
0

小さなビデオにパースペクティブを追加して、別のビデオの上に重ねて表示しようとしています。(FFMPEG)ビデオをオーバーレイする前に領域を透明にする

これまでのところ、ビデオを小さくしたり、パースペクティブを追加して他のビデオにオーバーレイすることができます。パースペクティブフィルタを適用した後、余分な領域は透明にならず、ピクセルを伸ばします。

パースペクティブフィルタには多くのドキュメントはありませんが、私が知る限り、余分なピクセルを透明に設定する方法はありませんでした。

私はアルファマスクのようなものを希望のエリアに適用する必要があると思いますか?

これは私が見通しのために使用しているコマンドです:

ffmpeg -i /synced_folder/testvid.mp4 -vf perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0 /synced_folder/output5.mp4 

はそれが重要だと思いませんが、私はCentOSの持つVM上でffmpegのを実行していますよ。

This is a SS of how the result looks like:

+0

あなたはvideo.seでより速い回答を得ることができます – v010dya

答えて

2

これは、型にはまらないアプローチが必要。パースペクティブフィルタは、DVEタイプのオーバーレイではなく、録音中に特定のタイプのディストーションを修正するためのものでした。エッジのピクセルはキャンバスを塗りつぶすように拡張されます。

ここでのヒントは、透明なパディングをビデオに追加し、パースペクティブを追加することです。拡張されるピクセルは透明ピクセルになり、オーバーレイ時には見えなくなります。

ffmpeg -i base.mp4 -i overlay.mp4 
filter_complex" [1]pad=iw+4:ih+4:2:2:[email protected],perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0[p]; 
       [0][p]overlay=-2:-2" output.mp4 

普通のピクセル形式が4:2:0であるために選択された2ピクセルの境界でパディングされています。境界線の色は黒ですが、アルファは0です。

厳密に言えば、遠近法の値は境界線を考慮して修正する必要がありますが、それは小さな変更です。オーバレイはまた、可視ビデオを意図された目的地に整列させるためにオフセットされる。

0

Iはalphaextractとalphamergeコマンドを使用して、その後、私が望んでいた分野でアルファ0とPNGを使用して所望の効果を得ました。

それはうまくいきますが、誰かがperspectiveコマンドから透明な背景を直接得る方法を知っていれば、私は助けていただければ幸いです。

ffmpeg -y -i video.mp4 -loop 1 -i alphamask.png -filter_complex "[1:v]alphaextract[alf];[0:v][alf]alphamerge" -c:v qtrle -an /synced_folder/output.mov 

(あなたが出力を再生する場合、それは動作しませんでしたように、それが見えるかもしれないことに注意してください。あなたは、バックグラウンドで何かでそれをオーバーレイする必要があり、結果を表示するには)

関連する問題