CodeGym /Kurslar /Python SELF AZ /MoviePy ilə video işlənməsinə giriş

MoviePy ilə video işlənməsinə giriş

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. MoviePy nədir və niyə hamıdan yaxşıdır?

Salam, əziz tələbələr! Bu gün MoviePy ilə video işləmənin maraqlı dünyasına qərq olacağıq — bu alət sizə adi videokliplərdən video sehrini yaratmağa imkan verəcək. Əgər heç vaxt düşünmüsünüzsə ki, video montaj yalnız bahalı alətlərlə peşəkarların işidir, bu gün sizə bunun belə olmadığını sübut edəcəm. Gəlin başlayaq!

MoviePy — Python üçün video işləmə kitabxanasıdır. O sizə video faylları oxumağa, yazmağa, dəyişməyə və hətta audio ilə işləməyə imkan verir! Və bütün bunlar video montaj kurslarına qatılmağa ehtiyac olmadan. Bir az sehr və sizin Python diliniz istənilən dildə video pıçıldamağa başlayır.

Niyə məhz MoviePy?

  • Sadəlik: MoviePy intuitiv interfeysi ilə fərqlənir, hansı ki, sizə kodlarla itirilmədən videolarla işləmək imkanı verir.
  • Çoxfunksiyalılıq: Videoları kəsməkdən mətnlər və effektlər əlavə etməyə qədər — MoviePy əksər tapşırıqlarda sizə kömək edəcək.
  • Uyğunluq: Müxtəlif platformalarda işləyir və NumPy və PIL (Pillow) kimi digər kitabxanalarla birlikdə istifadə edilə bilər.

2. MoviePy quraşdırılması

Gəlin MoviePy quraşdıraq! Bunun üçün sizə Python və internetdən paketlər yükləyə bilmək lazımdır. Wi-Fi-a qoşulun (ya da GitHub-u pulsuz Wi-Fi kimi istifadə edin — deyirlər, peşəkarlar belə edir), terminalı açın və yazın:


pip install moviepy

Əgər nəsə düzgün getməsə, narahat olmayın! Biz proqramlaşdırma dünyasındayıq, burada "hər şey düzgün getmədi" — bu hətta bug yox, bir az inkişaf etdirilmiş xüsusiyyətdir.

Quraşdırma ilə bağlı problemləri həll edirik

Əgər quraşdırma zamanı səhvlərlə qarşılaşsanız, kompüterinizi tullamayın. Aşağıdakı addımları yoxlayın:

  • Python versiyasını yoxlayın: MoviePy üçün 3.5 və ya daha yuxarı versiya olan Python tələb olunur.
  • Bütün zəruri asılılıqların quraşdırıldığına əmin olun: MoviePy-nin bəzi funksiyaları üçün FFMPEG tələb oluna bilər. Rəsmi FFMPEG səhifəsindəki təlimatlara əsasən, onu quraşdırın.
  • Virtual mühitdən istifadə etməyə çalışın: Bəzi hallarda, asılılıq problemləri yeni virtual mühit yaradaraq həll edilir. python -m venv myenv yazaraq yoxlayın.

3. Videonu açmaq və oxumaq

İndi ki, bizdə MoviePy quraşdırılıb, işə başlaya bilərik. Təsəvvür elə ki, köhnə yaxşı kino proyektorunu götürüb, lentləri zarafatlara və elementlərə bölməyə başlayırsan ki, yeni bir şedevr yaradasan. Gəlin bunu kodda necə işlədiyini görək.

MoviePy-də video ilə işləmək üçün VideoFileClip sinifindən istifadə olunur ki, o, video faylları yükləməyə və emal etməyə imkan verir. Video faylının açılması — onun xassələrinə və redaktə imkanlarına çıxışı təmin edən ilk addımdır.

Video faylını açmaq


from moviepy.editor import VideoFileClip

# Video faylını açmaq
video = VideoFileClip("sample_video.mp4")

# Video haqqında əsas məlumatı əldə etmək
print("Müddət:", video.duration, "saniyə")
print("Həll:", video.size)
print("Kadr tezliyi:", video.fps, "kadr/saniyə")

Kodun izahı

  • VideoFileClip("sample_video.mp4"): sample_video.mp4 video faylını yükləyir və onunla işləmək üçün video obyektini yaradır.
  • video.duration: Videonun müddətini saniyələrlə göstərir.
  • video.size: Videonun ölçülərini (eni və hündürlüyü) qaytarır.
  • video.fps: Videonun kadr tezliyini (frames per second) qaytarır.

4. Videonun ölçülərinin dəyişdirilməsi

Bəzən dərc üçün və ya optimizasiya üçün videonun ölçülərini dəyişmək lazım olur. MoviePy-də bunu resize() metodu ilə etmək olar, bu metod videonu lazım olan ölçüyə və ya orijinaldan müəyyən faizlə miqyaslandıra bilər.

Nümunə


# Videonun ölçüsünü orijinaldan 50% qədər kiçiltmək
video_resized = video.resize(0.5)
video_resized.write_videofile("resized_video.mp4")

Kodun izahı

  • video.resize(0.5): Videonun ölçülərini orijinal ölçülərdən 50%-ə qədər azaldır.
  • write_videofile(): Nəticəni resized_video.mp4 adlı yeni video faylı olaraq saxlayır.

Faizlə miqyaslamadan başqa, konkret ölçü təyin etmək olar, məsələn, videonun enini 640 pikselə dəyişdirmək:


# Videonun enini 640 piksel etmək
video_resized = video.resize(width=640)
video_resized.write_videofile("resized_video_640.mp4")

Əgər yalnız bir tərəfi (məsələn, width=640) göstərsəniz, ikinci tərəf avtomatik şəkildə proporsiyanı qorumaq üçün hesablanacaq.

5. Videonun kəsilməsi (crop)

Kəsmə (crop) — əgər videonun lazımsız hissələrini çıxarıb yalnız lazım olan sahəni saxlamaq istəyirsinizsə, bu faydalı bir əməliyyatdır. crop() metodu kəsmə üçün koordinatları təyin etməyə imkan verir: yuxarı və aşağı sərhədləri, həmçinin sol və sağ tərəfləri.

Nümunə


# Videonun kəsilməsi: kənar sahələrin çıxarılması
video_cropped = video.crop(x1=50, y1=50, x2=500, y2=400)
video_cropped.write_videofile("cropped_video.mp4")

Kodun izahı

  • video.crop(x1=50, y1=50, x2=500, y2=400): Videonu kəsir və koordinatdan (50, 50) koordinatına (500, 400) qədər olan sahəni saxlayır.
  • write_videofile(): Kəsilmiş videonu cropped_video.mp4 kimi saxlayır.

6. Videonun döndürülməsi

MoviePy həmçinin videonun 90, 180 və ya 270 dərəcə döndürülməsini dəstəkləyir ki, bu da müxtəlif istiqamətlərdə çəkilmiş videolarla işləyərkən faydalı ola bilər.

Videonun 90 dərəcə döndürülməsi


# Videonun 90 dərəcə döndürülməsi
video_rotated = video.rotate(90)
video_rotated.write_videofile("rotated_video.mp4")

Kodun izahı

  • video.rotate(90): Videonu saat əqrəbi istiqamətində 90 dərəcə döndərir.
  • write_videofile(): Döndərilmiş videonu rotated_video.mp4 kimi saxlayır.

7. Oynatma sürətinin dəyişdirilməsi

Bəzi hallarda videonu sürətləndirmək və ya yavaşlatmaq faydalı olur. MoviePy-də bunu oynatma sürətini dəyişdirməyə imkan verən fx metodu vasitəsilə etmək olar.

Videonu 2 dəfə sürətləndirmək


from moviepy.video.fx.all import speedx

# Videonu 2 dəfə sürətləndirmək
video_fast = video.fx(speedx, 2)
video_fast.write_videofile("fast_video.mp4")

Kodun izahı

  • video.fx(speedx, 2): Videonu 2 dəfə sürətləndirir. Əgər videonu yavaşlatmaq istəsəydiniz, 1-dən kiçik bir qiymət istifadə edə bilərsiniz (məsələn, 0.5).
  • write_videofile(): Sürətləndirilmiş videonu fast_video.mp4 kimi yadda saxlayır.

8. Vaxt üzrə kəsmə (videonun doğranması)

MoviePy həmçinin videonu vaxt üzrə kəsməyə imkan verir, bu isə müəyyən bir hissəni videodan ayırmaq lazım olduqda faydalıdır.

Nümunə: Videonun 10-cu saniyədən 30-cu saniyəyə qədər kəsilməsi


# Videonu vaxt aralığında 10-cu saniyədən 30-cu saniyəyə qədər kəsmək
video_subclip = video.subclip(10, 30)
video_subclip.write_videofile("subclip_video.mp4")

Kodun izahı

  • video.subclip(10, 30): 10-cu saniyədən başlayıb 30-cu saniyədə bitən yeni bir videoklip yaradır.
  • write_videofile(): Kəsilmiş parçanı subclip_video.mp4 olaraq yadda saxlayır.

9. Dəyişikliklərin saxlanması və videonun eksportu

Videonu emal etdikdən sonra dəyişiklikləri saxlamaq vacibdir. MoviePy videonu müxtəlif formatlarda eksport etmək üçün write_videofile() metodundan istifadə edir.

Nümunə: Parametrlərin tənzimlənməsi ilə eksport


# Parametrləri tənzimləyərək videonun saxlanması
video_resized.write_videofile(
    "output_video.mp4", 
    codec="libx264",     # video üçün codec (məsələn, MP4 üçün libx264)
    audio_codec="aac",   # audio üçün codec (məsələn, aac)
    bitrate="5000k"      # keyfiyyəti tənzimləmək üçün bitrate
)

Kodun izahı

  • codec: Videonun sıxılması üçün codec təyin edir. Məsələn, MP4 formatı üçün libx264.
  • audio_codec: Audio treki üçün codec təyin edir (məsələn, aac).
  • bitrate: Videonun keyfiyyət və ölçüsünü tənzimləyir (yüksək keyfiyyət üçün 5000 kbps).

Tam işlək kod nümunəsi

Baxılan metodları birləşdirərək videonu açan, ölçüsünü dəyişən, döndərən, kəsən və nəticəni saxlayan bir nümunə yaradaq.


from moviepy.editor import VideoFileClip
from moviepy.video.fx.all import speedx

# Video faylın açılması
video = VideoFileClip("sample_video.mp4")

# Orijinalın 50%-ə qədər ölçüsünün azaldılması
video_resized = video.resize(0.5)

# 90 dərəcə döndərilməsi
video_rotated = video_resized.rotate(90)

# Videonun 1.5 dəfə sürətləndirilməsi
video_fast = video_rotated.fx(speedx, 1.5)

# 5-dən 20-ci saniyəyə qədər olan hissənin kəsilməsi
video_subclip = video_fast.subclip(5, 20)

# Emal edilmiş videonun saxlanması
video_subclip.write_videofile("final_output.mp4", codec="libx264", audio_codec="aac", bitrate="3000k")

10. Tipik səhvlər

Əgər MoviePy istifadə edərkən hər hansı problemlərlə qarşılaşsanız, tələsməyin saçınızı yolmağa. Budur bir neçə yayılmış problem və onların həll üsulları:

  • Codec problemləri: Əgər faylınız yaddaşa verilə bilmirsə, problem codec-lərdə ola bilər. write_videofile metoduna codec="libx264" əlavə edin.
  • FFMPEG xətası: Əmin olun ki, FFMPEG quraşdırılıb və sisteminizin PATH-ında qeyd edilib. Bunu yoxlamaq üçün komanda sətrində ffmpeg icra edin.

Praktikada tətbiq

Əvvəl qeyd edildiyi kimi, MoviePy YouTube kanallarınız üçün, təlimlər üçün, təqdimatlar üçün və daha bir çox işlərdə sizin sadiq yoldaşınız ola bilər. Bu bacarıqlar video hesabatlar hazırlamaq, reklam materiallarını emal etmək və hətta müsahibələrdə gələcək işəgötürəni öz universallığınızla təsirləndirmək üçün faydalıdır.

Beləliklə, dostlar, artıq MoviePy-nin əsaslarını bildiyinizə görə əsl video sehri yaratmağa hazırsınız. Qarşımızda bizi daha çox video və audio macəraları gözləyir, buna görə də popkornlarınıza hazır olun və kodlama dalğasında bizimlə qalın!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION