1. Videonu bölmək
Bu mühazirədə diqqəti əsasən MoviePy kitabxanası vasitəsilə videonu bölməyə və klipləri birləşdirməyə yönəldəcəyik. Siz videonu hissələrə necə bölməyi və bu hissələrdən tam bir videolayihə yaratmağı öyrənəcəksiniz. Belə bir "Python-miks" üslubunda proqramlaşdırma təlimindən hazırlanmış video səhər yeməyi düşünün.
İlk olaraq, videonu fraqmentlərə necə bölməyi öyrənəcəyik. Bu, müxtəlif hallarda lazım ola bilər: ən son elmi kəşfləriniz üçün demo yaratmaqdan tutmuş, Zoom konfranslarında göz qırpma anlarınızı toplamaq üçün!
Videonu vaxt əsasında bölmək
Videonu fraqmentlərə bölmək, MoviePy-dəki cut
metodundan istifadə etməklə həyata keçirilir. Biz maraqlandığımız başlanğıc və son vaxt intervallarını təyin edə bilərik.
from moviepy.editor import VideoFileClip
# Videonu yükləyirik
clip = VideoFileClip("input_video.mp4")
# Fraqmenti 10-dan 20 saniyəyə qədər kəsirik
clip1 = clip.subclip(10, 20)
# Kəsilmiş fraqmenti saxlayırıq
clip1.write_videofile("clip1.mp4")
Bu kod, orijinal videonun 10-cu və 20-ci saniyələri arasındakı fraqmenti kəsir. Sinir sistemini qorumaq və sərt diskdə yeri boş saxlamaq üçün düzgün vaxt göstəricilərini qeyd etmək vacibdir, əks halda "təsadüfi" olaraq uzaqdan edilən qəhvə fasilələrinizin fraqmentini əldə edə bilərsiniz.
Videonu bir neçə hissəyə bölmək
Videonu bir neçə hissəyə bölüb onları ayrıca kliplər kimi saxlaya bilərsiniz, sonra isə birləşdirə bilərsiniz.
Videonu üç fraqmentə bölmək
30 saniyə uzunluğunda bir videomuz olduğunu düşünək və onu 10 saniyəlik üç bərabər fraqmentə bölmək istəyirik.
# Üç bərabər fraqment yaratmaq
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)
# Fraqmentləri saxlamaq
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")
Bu kod üç videoklip yaradır:
clip1
— 0-dan 10 saniyəyə qədər,clip2
— 10-dan 20 saniyəyə qədər,clip3
— 20-dən 30 saniyəyə qədər.
Hər bir fraqment ayrıca video faylı kimi saxlanılır.
Ən maraqlı fraqmentləri kəsmək
Çox vaxt bir fraqment kifayət etmir və sizə bir neçə videoçiçəkdən ibarət bir buket lazımdır. Biz bir neçə belə fraqment yarada və onları saxlaya bilərik.
clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)
clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")
İndi bizdə orijinal videodan kəsilmiş üç fraqment var. Sanki pazl toplamaq kimi, amma tərsinə.
2. Kliplərin birləşdirilməsi
Bölmədən sonra, indi videobuludumuzu yenidən yığmaq vaxtıdır, amma bu dəfə yeni, yenidən işlənmiş formada. Burada bizə MoviePy-nin bir neçə klipi birləşdirərək birinə çevirmə imkanı kömək edəcək.
Videokliplərdən kompilasiyalar yaratmaq
Klipləri birləşdirmək üçün concatenate_videoclips
metodundan istifadə edirik. Bu metod klipləri bir-birinin ardınca göstərilən sıralamada düzəltməyə imkan verir.
from moviepy.editor import concatenate_videoclips
# Klipləri bir klipdə birləşdiririk
final_clip = concatenate_videoclips([clip1, clip2, clip3])
# Birləşdirilmiş videonu saxlayırıq
final_clip.write_videofile("final_video.mp4")
İndi bizdə sizin ən yaxşı anlarınızın toplusunu əks etdirən yeni bir videoproject var. Yaxud, ardıcıllığı unutmusunuzsa, təsadüfi anlar.
Klipləri birləşdirərkən audio əlavə etmək
Videoklipləri birləşdirərkən həmçinin bir audio fayl da əlavə edə bilərsiniz. Məsələn, əgər sizdə musiqi faylı və ya başqa bir audio klip varsa, onu birləşdirilmiş videoya əlavə edə bilərsiniz.
Audiodan istifadə edərək videoklipləri birləşdirmək
from moviepy.editor import AudioFileClip
# Audio klip yaratmaq
audio_clip = AudioFileClip("background_music.mp3")
# Audio klipi birləşdirilmiş videoya əlavə edirik
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")
Burada:
AudioFileClip("background_music.mp3")
musiqi faylından audio klip yaradır.set_audio(audio_clip)
audio cığırıfinal_clip
birləşdirilmiş videoya əlavə edir.
3. Kliplər arasında keçidlər
MoviePy-də kliplər arasında keçidlər yaratmaq üçün CompositeVideoClip
sinifindən və müxtəlif effektlərdən istifadə edilir. Əsas ideya — bir klipi digərinin üzərinə şəffaflıq və ya sürüşmə kimi effektlərdən istifadə edərək keçirməkdir. Keçidlər tez-tez şəffaflığın dəyişməsi və ya kadrların sürüşməsi ilə bir klipin digərinə yumşaq keçid etməsini ehtiva edir.
Tədricən yoxa çıxma (Fade) keçidi
Tədricən yoxa çıxma ən məşhur keçidlərdən biridir, burada birinci klip ekranı yumşaq şəkildə tərk edir, ikinci klip isə yumşaq şəkildə görünməyə başlayır. Bu effekt crossfadein()
və ya crossfadeout()
funksiyası vasitəsilə yaradılır.
İki klip arasında yoxa çıxma keçidi
from moviepy.editor import VideoFileClip, concatenate_videoclips
# İki videoklipi yükləyirik
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5) # 5 saniyədən ibarət birinci klip
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5) # 5 saniyədən ibarət ikinci klip
# Yoxa çıxma effektini qurmaq
clip1 = clip1.crossfadeout(1) # 1 saniyəlik klip 1-in yoxa çıxması
clip2 = clip2.crossfadein(1) # 1 saniyəlik klip 2-nin görünməyə başlaması
# Keçid ilə kliplərin birləşdirilməsi
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")
Bu nümunədə:
crossfadeout(1)
birinci klipi 1 saniyə ərzində getdikcə daha şəffaf edir.crossfadein(1)
ikinci klipi 1 saniyə ərzində getdikcə az şəffaf edir.concatenate_videoclips([clip1, clip2], method="compose")
yoxa çıxma ilə iki klipi birləşdirir.
Qaralma ilə keçid
Qaralma (və ya "qara ekran fade") birinci klipin qara ekrana keçməsi və sonrasında növbəti klipin qaranlıqdan görünməyə başlaması effektidir. Bu keçid bir səhnənin tamamlanmasını və sonra gələn səhnənin başlamasını vurğulamaq üçün istifadə edilir.
from moviepy.editor import VideoFileClip, concatenate_videoclips
# İki klipi yükləyirik
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)
# Qaralma effektini qurmaq
clip1 = clip1.fadeout(1) # Klip 1-in qaralması
clip2 = clip2.fadein(1) # Klip 2-nin qaranlıqdan çıxması
# Qaralma ilə kliplərin birləşdirilməsi
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")
Burada:
fadeout(1)
klipi 1 saniyə ərzində qara ekrana keçirir.fadein(1)
ikinci klipi qaradan yumşaq şəkildə görünməyə başlayır.
İndi videonuz nə sadəcə kliplərin yığınıdır, nə də əslində peşəkar keçidlər ilə xüsusi yaradılmış bir işdir. Gördüyünüz kimi, biz daxilolma və çıxarılma fade effektləri əlavə etdik ki, videonuz daha hamar keçidlərə malik olsun.
4. Praktiki tətbiq
Bu mühazirədə əldə edilən bacarıqlar çox faydalıdır. Təsəvvür edin, proqramlaşdırma haqqında təlimat yaradırsınız, yeni bir kitabxana üçün reklam videosu hazırlayırsınız və ya pişiyinizin IT dünyasına gəlişini montaj edirsiniz (bəli, belə şeylər də olur!). Videonu bölmək və onu tematik bloklara birləşdirmək bacarığı - videomontaj və avtomatlaşdırma sahəsində əsl usta olmağa doğru bir addımdır.
Tipik səhvlər
Video bölmələri və birləşdirmə zamanı zaman göstəricilərinə diqqətlə yanaşın. Hamımız o anları görmüşük ki, video gözlənilmədən dayandırılır (və yenidən həmin cansıxıcı konfrans slaydlardan başlayırıq). Əmin olun ki, göstəricilər dəqiqdir və heç bir səhv yoxdur. MoviePy bəzən səhv formatlara və ya boş kliplərə şikayət edə bilər, buna görə kodunuzu işə salmadan əvvəl düzgün olduğuna əmin olun.
Ümid edirəm ki, indi təkcə biliklərlə deyil, həm də qarşınızda açılan imkanlardan həzz alırsınız. İrəli, Python və MoviePy ilə videomontaj və yaradıcı həllər dünyasına!
GO TO FULL VERSION