FFmpeg - Yüze bulanıklık uygulayın


19

FFmpeg kullanarak bir videonun bir bölümünü bulanıklaştırmaya çalışıyorum (özellikle bir yüzü bulanıklaştırmak için).

Zaman çizelgesi düzenlemesi ve çeşitli bulanıklaştırıcı filtrelerin bir kombinasyonunu kullanmaya çalışıyorum, ancak videonun yalnızca bir bölümünü bulanıklaştırmanın bir yolunu bulamıyorum.

Gibi bir şey için umut ediyorum:

-vf boxblur=enable='between(t,10,100)':width=20:height=20:x=400:y=200

Nerede width / height bulanık kutunun boyutu ve x / y bulanık kutunun yeridir.

Böyle bir şey mümkün mü?

Yanıtlar:


26

Bulanıklaştırmak istediğiniz alanın statik bir yer olduğu varsayılarak, bir bölüme / bölüme zamansal ve uzamsal bulanıklaştırma uygulanabilir.

Black lab pup
Orijinal siyah laboratuvar yavru resim.

Maske görüntüsü kullanma

enter image description hereenter image description here
Gri tonlamalı PNG maskesi resmi ve sonuçta elde edilen bulanık resim.

Bulanıklaştırılacak alanı belirtmek için gri tonlamalı bir maske görüntüsü oluşturabilirsiniz. Kullanım kolaylığı için, bulanıklaştırmak istediğiniz görüntü veya video ile aynı boyutta olmalıdır.

Kullanarak örnek alphamerge , Kutu bulanıklığı , ve kaplama :

ffmpeg -i video.mp4 -i mask.png -filter_complex "[0:v][1:v]alphamerge,boxblur=10[alf];[0:v][alf]overlay[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart maskedblur.mp4
  • Beyaz alan, bulanıklığın ortaya çıkacağı yerdir, ancak bu, ekranla kolayca tersine çevrilebilir. reddetmek örneğin, filtre: [1:v]negate[mask];[0:v][mask]alphamerge,boxblur=10[alf]...

  • Kullanabilirsiniz geq Degrade gibi bir maske oluşturmak için filtre.

Belirli bir alanı bulanıklaştırma (maskesiz)

Black lab pup with blur effect

ffmpeg -i derpdog.mp4 -filter_complex \
 "[0:v]crop=200:200:60:30,boxblur=10[fg]; \
  [0:v][fg]overlay=60:30[v]" \
-map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart derpdogblur.mp4

Not: X ve y, bindirmedeki sayıları ofset ( 60 ve 30 Bu örnekte) mahsup ofsetleriyle eşleşmelidir.

Bu örnek ne yapar:

  1. Kopyayı, bulanıklaştırılacak alanın boyutu olacak şekilde kesin. Bu örnekte: sağa 60 piksel olan 200x200 piksel bir kutu ( x eksen) ve 30 piksel aşağı ( y eksen) sol üst köşeden.
  2. Kırpılan alanı bulanıklaştırın.
  3. Aynısını kullanarak bulanık alanı kaplayın x ve y parametreler ekin Filtre.

Belirli alanlar üzerinde çoklu bulanıklaştırma (maskesiz)

enter image description here
Sol üstte, merkeze yakın ve altta bulanık alanlar.

"[0:v]crop=50:50:20:10,boxblur=10[b0]; \
 [0:v]crop=iw:30:(iw-ow)/2:ih-oh,boxblur=10[b1]; \
 [0:v]crop=100:100:120:80,boxblur=10[b2]; \
 [0:v][b0]overlay=20:10[ovr0]; \
 [ovr0][b1]overlay=(W-w)/2:H-h[ovr1]; \
 [ovr1][b2]overlay=120:80"

Belirli bölge bulanık değil (maskesiz)

enter image description here

"[0:v]boxblur=10[bg];[0:v]crop=200:200:60:30[fg];[bg][fg]overlay=60:30"

Ek şeyler


Yanıtınız için çok teşekkür ederiz. Hepsi çok mantıklı geliyor. Bir yan not olarak, split filtrenin nihayet anlamlı olmasını sağladı! Ayrıca, bulanık kutuyu görüntünün etrafında dinamik olarak hareket ettirmek için aritmetik ifadeler aracılığıyla mümkün olabilir mi? I.E. doğrusal olmayan şekilde hareket ederken birinin yüzünü bulanıklaştırmak amacıyla mı?
occvtech

Tekrar teşekkürler! Ben onunla bir çatlak alacağım. Doğrusal olmayan bir editörün 1000 kat daha kolay olacağını biliyorum, ancak birden fazla dosyayı toplu işlem yapmayı ve import / key frame / export işlemini beklemek istemiyorum. Tekrar teşekkürler!
occvtech

1
FFMPEG daireler gibi kutuların yanı sıra başka şekiller sunuyor mu?
Sun

@ LordNeckbeard cmd kullanıyorum ve Örnek 1 kullanmak istiyorum ancak kodu çalıştırdığımda bu hatayı alıyorum Unrecognized option 'filter_complex[0:v]crop=200:200:60:30,boxblur=10[fg];[0:v][fg]overlay=60:30[v]-map [v] -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4'. Error splitting the argument list: Option not found
Jim

1
@Jim Örnek komutumun bir fiyat teklifi almadığını fark ettim. Komuta böyle görünmeli: ffmpeg -i input.mp4 -filter_complex "[0:v]crop=200:200:60:30,boxblur=10[fg]; [0:v][fg]overlay=60:30[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4
llogan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.