2016-07-08 9 views
17

のこれはPHP経由で実行されている、動画に画像を追加して、私のコードです:FFMPEG:、ビデオに固定サイズの画像を追加かかわらず、ビデオの幅と高さ(解像度)

exec('ffmpeg -i input.mp4 -i logo.png -filter_complex 
"[0:v][1:v] overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4'); 

それはうまく動作しますが、問題は、画像がビデオ解像度でスケールアップまたはアップされることです。たとえば、次の画像にロゴ幅が50pxですが、動画の解像度は異なります

enter image description here

この1

私がダウン/アップスケーリングから画像を防ぐことができますどのようにenter image description here


更新

Mulvyaのおかげで、彼は非常にうまく機能しているこれらのコードに

ffmpeg -i input.mp4 -i logo.png -filter_complex 
"[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[base][wm]overlay=10:10" 
-pix_fmt yuv420p -c:a copy output.mp4 

ffmpeg -i input.mp4 -i logo.png -filter_complex 
"[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[wm]setsar=1[wmsar]; 
[base][wmsar]overlay=10:10" 
-pix_fmt yuv420p -c:a copy output.mp4 

を提案したが、それは、ロゴの側面を保持しません。比。 私は、異なる解像度を持つ2本の動画にこのコードを試してみましたが、これは結果

enter image description here

であり、この1

enter image description here

が、それはこのソリューションを改善することは可能ですか?

答えて

10

scale2refフィルタを使用できます。

ffmpeg -i input.mp4 -i logo.png -filter_complex 
"[1:v][0:v]scale2ref=(W/H)*ih/8/sar:ih/8[wm][base];[base][wm]overlay=10:10" 
-pix_fmt yuv420p -c:a copy output.mp4 

これは、ロゴの高さをビデオの高さの1/8にリサイズします。

W/Hを画像の値に置き換える必要があります。 PNGが320x270の場合はscale2ref=(320/270)*ih/8:ih/8

+1

ありがとうございます。私は** **質問を更新しました。あなたのソリューションにはほとんど問題がありません – Drupalist

+0

あなたのロゴの解像度は?テストの場合は – Mulvya

+0

、それは505X384です。 – Drupalist

関連する問題