FFmpegを使用してこれを作成する方法?
FFmpegなしの例:
Adobe After Effects
Sony Vegas Pro
解決しました!
ffmpeg -i input.mp4 -lavfi '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' -vb 800K output.webm
入力: https://www.youtube.com/watch?v=17uHCHfgs6
出力: http://www.youtube.com/watch?v=CgZsDLfzrTs
ここで受け入れられた答えは、不必要な計算を非常に多く行っているため、実行に永遠にかかります。出力ビデオのビューポートから外れることが確実にわかっているピクセルをぼかす必要はありません。
したがって、より良い解決策は、出力に表示されるビデオの部分を最初にトリミングすることです。次に、この部分を拡大縮小してビューポートを「塗りつぶし」ます。最後に、元のビデオをその上にオーバーレイします。
Below example assumes that input video has greater
aspect ratio than output video.
┌─────────────┐
┌─────────────┐ │ │
│ Input video │ │ Output │
│ │ │ video │
└─────────────┘ │ │
│ │
└─────────────┘
filter graph を使用してこれを実現します。フィルターは、ドット表記で以下のようになります。
[original]
input --> split -------------------------------> overlay --> output
│ ^
│[copy] [blurred]│
└──────> crop ──> scale ──> gblur ─────────┘
入力ビデオの解像度が1280 x 720であるとすると、コマンドは次のようになります。
ffmpeg -i input.mp4 -vf 'split [original][copy]; [copy] crop=ih*9/16:ih:iw/2-ow/2:0, scale=1280:2282, gblur=sigma=20[blurred]; [blurred][original]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2' output.mp4
Windowsでffmpeg 3.4.2を使用して動作するように提供された以前のソリューションのいずれも入手できませんでした。
しかし、これはうまくいきました:
ffmpeg -i <input_file> -filter_complex "[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16" <output_file>
<input_file>
および<output_file>
を適切なファイル名に置き換えることを忘れないでください。
このようなぼかし画像にビデオをオーバーレイしてみてください。
ffmpeg -i input_video -loop 1 -i input_image -t 10 -filter_complex "
[0:v]scale=-1:720[scaled_video];
[1:v]scale=1280:720,boxblur=50[blur_image];
[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" -c:v libx264 -aspect 1280/720 -map [outv] -map 0:a -c:a copy output_video
入力画像は-loop 1
によって出力ビデオのデュレーションを通してループされます。そして-t 10
は、出力ビデオの長さを10秒に制限します。この例では、出力ビデオ解像度として1280:720を使用し、この比率に一致するように入力をスケーリングしました。 0:v
は入力ビデオを参照し、それに応じて幅が調整される720の高さにスケーリングされます。
ここでは boxblur
フィルターを使用しましたが、sab
、smartblur
、unsharp
などのフィルターがいくつかあります。 map
は、指定された処理済み入力ストリームを取得し、それに応じてを出力ストリームにマップします。
これがあなたに役立つことを願っています!
私はあらゆる種類の動画について普遍的な決定をしました。垂直方向および水平方向のビデオに適しています。ビデオのサイズを1080p(720pでも使用可能)に変更し、すべての空のスペースをぼかしたビデオで埋めます。
ffmpeg -i input.mp4 -lavfi "[0:v]scale=1920*2:1080*2,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[0:v]scale=-1:1080[ov];[bg][ov]overlay=(W-w)/2:(H-h)/2,crop=w=1920:h=1080" output.mp4