1. Mətnin əlavə edilməsi və onun hərəkət animasiyası
MoviePy — bu, sadəcə əla bir alətdir ki, darıxdırıcı videoları kino şedevrlərinə çevirsin. Ya da ən azından, hərəkət edən mətn və qrafik olan bir şey etsin. Əvvəlcə videomuza statik elementləri necə əlavə edə biləcəyimizi anlayaq, sonra isə magiyaya — animasiyaya keçək.
Mətnin əlavə edilməsi və onun hərəkət animasiyası
MoviePy-də mətn və onun animasiyası üçün TextClip
istifadə olunur. Bunun vasitəsilə mətn, şrift, rəng və digər parametrləri təyin etmək mümkündür. Daha sonra set_position()
metodu vasitəsilə mətnin ekran üzərindən hərəkəti təyin olunur.
Mətnin üfüqi olaraq hərəkəti
Bu nümunədə mətn soldan sağa hərəkət edəcək.
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# Əsas videonu yükləmək
video = VideoFileClip("sample_video.mp4")
# Mətn klipini yaratmaq
text = TextClip("Hərəkət edən mətn", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)
# Mətnin video üzərinə əlavə olunması
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)
Burada:
TextClip("Hərəkət edən mətn", fontsize=50, color='white')
ağ rəngdə və 50 ölçüsündə mətn yaradır.set_position(lambda t: (int(200 * t), 100))
mətnin sağa, yəni üfüqi olaraq sabit sürətlə hərəkət etməsini təmin edir.CompositeVideoClip([video, text])
mətn klipi ilə əsas videoklip arasındakı birləşməni təmin edir.
Mətnin hərəkət istiqamətinin dəyişməsi ilə animasiya
Həmçinin, mətn üçün daha mürəkkəb bir hərəkət trayektoriyası yarada bilərsiniz, üfüqi və şaquli hərəkətləri birləşdirərək.
Mətnin diaqonal hərəkəti
Bu nümunədə mətn diaqonal olaraq hərəkət edəcək.
text = TextClip("Diaqonal mətn", fontsize=50, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_diagonal_text.mp4", fps=24)
Burada:
set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t)))
funksiyası mətnin diaqonal hərəkətini təmin edir, üfüqi və şaquli yerdəyişməni birləşdirərək.
Mətnin görünmə və yox olma effekti ilə animasiyası
Mətnin görünməsi və yox olması üçün onun şəffaflığını zamanla dəyişmək olar. Bunun üçün MoviePy-də fadein()
və fadeout()
metodları istifadə olunur.
Mətnin yumşaq görünmə və yox olma effekti
# Yumşaq görünmə və yox olma effekti ilə mətn
text = TextClip("Görünən mətn", fontsize=40, color='blue')
text = text.set_position(('center', 'bottom')).set_duration(5).fadein(1).fadeout(1)
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_fade_text.mp4", fps=24)
Burada:
fadein(1)
vəfadeout(1)
mətnin 1 saniyə ərzində yumşaq şəkildə görünməsi və yox olmasını təmin edir.
2. Qrafik elementlərin əlavə olunması
Şəkillərin əlavə edilməsi və onların hərəkətinin animasiyası
Mətnə əlavə olaraq, MoviePy ImageClip
sinifindən istifadə edərək video üzərinə şəkillər əlavə etməyə imkan verir. Şəkilin trayektoriyasını təyin edərək və ya set_position()
köməyi ilə onun mövqeyini dəyişərək onu animasiya edə bilərsiniz.
Loqotipin aşağıdan yuxarıya hərəkəti ilə animasiyası
from moviepy.editor import VideoFileClip, ImageClip
# Videonun və şəkilin yüklənməsi
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)
# Loqotipin animasiyası — aşağıdan yuxarıya hərəkət
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))
# Videonun üzərinə loqotip yerləşdirilməsi
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)
Burada:
ImageClip("logo.png").set_duration(5)
loqotipin şəklini yükləyir və onun müddətini təyin edir.set_position(lambda t: ('center', int(500 - 100 * t)))
loqotipi şaquli olaraq aşağıdan yuxarıya hərəkət etdirir.
Şəkilin miqyas artımı ilə görünməsi
Yarada biləcəyiniz digər bir effekt isə şəkilin tədricən miqyasının artması ilə görünməsidir.
# Şəkilin yüklənməsi
logo = ImageClip("logo.png").set_duration(5)
# Miqyas artımı effekti üçün görüntünün tənzimlənməsi
logo = logo.resize(lambda t: 1 + 0.5 * t) # Miqyasın artırılması
logo = logo.set_position(('center', 'center'))
# Miqyas animasiyalı loqotipi video üzərinə əlavə etmə
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)
Burada:
logo.resize(lambda t: 1 + 0.5 * t)
loqotipin miqyasını hər saniyə 50% artırır və yaxınlaşma effekti yaradır.
3. Bir neçə animasiya elementinin kombinasiyası
MoviePy bir neçə animasiya elementinin bir videoda birləşdirilməsinə imkan verir. Məsələn, eyni zamanda üfüqi istiqamətdə hərəkət edən mətn əlavə etmək və şaquli istiqamətdə hərəkət edən şəkil əlavə etmək olar.
Mətn və şəkilin eyni vaxtda animasiyası
# Üfüqi olaraq hərəkət edən mətnin yaradılması
text = TextClip("Mətn və şəkil", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)
# Loqotipin aşağıdan yuxarı animasiyası
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))
# Mətn və loqotipin videoya əlavə edilməsi
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)
Burada:
- Biz soldan sağa hərəkət edən mətn animasiyası və aşağıdan yuxarı hərəkət edən loqotip yaradırıq.
CompositeVideoClip([video, text, logo])
hər iki animasiya elementini əsas video üzərinə yerləşdirir.
Bir videoda mətn və qrafika animasiyası yaratmaq
Bu nümunədə tam bir videoçarx yaradacağıq, burada mətn diaqonal olaraq hərəkət edəcək, loqotip isə tədricən meydana çıxacaq və miqyasca böyüyəcək.
from moviepy.editor import VideoFileClip, TextClip, ImageClip, CompositeVideoClip
# Videonun yüklənməsi
video = VideoFileClip("sample_video.mp4")
# Diaqonal olaraq hərəkət edən mətn
text = TextClip("Animasiya edilmiş mətn", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)
# Loqotip, miqyasca böyüyür və tədricən görünür
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)
# Mətn və loqotipin videoya əlavə edilməsi
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)
Diqqət etməli olduğunuz səhvlər
Bəzən mətn və ya qrafika gözlədiyiniz kimi göstərilməyə bilər. Bu, zaman və ya mövqeyi düzgün təyin etməməklə bağlı ola bilər. İstifadə etdiyiniz məntiqi ifadələri yoxlayın və kodunuzu debugging etməyi unutmayın.
Digər bir tez-tez verilən sual — videom niyə düzgün formatda saxlanmır? Videonun ixracı üçün lazım olan codec-lərin quraşdırılmış olduğundan əmin olun. MoviePy bunu asanlaşdırır, amma bəzən uyğunluq problemləri yarana bilər ki, bu problemləri əlavə kitabxanalar quraşdırmaqla həll etmək daha asandır.
Bununla biz dərsimizi bitiririk. İndi siz yalnız mətn və qrafikanı videoya əlavə etmək deyil, həm də onları dinamik və canlı etmək bacarığına maliksiniz. Növbəti mühazirələrdə sizi yeni maraqlı texnikalar gözləyir, ona görə bizimlə qalın və bacarıqlarınızı inkişaf etdirməyə davam edin!
GO TO FULL VERSION