CodeGym /Kurslar /Python SELF AZ /Videoya mətn, altyazılar və başlıqlar əlavə etmək: şriftl...

Videoya mətn, altyazılar və başlıqlar əlavə etmək: şriftlərin, rənglərin və mövqelərin sazlanması

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

1. MoviePy mətn dünyasına giriş

Beləliklə, videoya mətn əlavə etmə sehrli dünyasına baş vurmağa hazırıq. Təsəvvür edin ki, siz bir rejissorsunuz və qarşınızda yalnız obrazları danışmağa məcbur etmək yox, həm də ekranda görünən sözləri idarə etmək vəzifəsi durur. Bəli, bəli, bu subtitrlərin və titrlərin magiyasıdır!

Başlamazdan əvvəl bir sadə şeyi başa düşmək vacibdir: MoviePy — bu sadəcə videolarla işləmək üçün növbəti kitabxana deyil. Bu sizin şəxsi video-dizaynerinizdir, hansı ki, proyektinizə bir az cazibə və məlumatlılıq əlavə etməyə kömək edə bilər. Artıq videonun redaktə olunmasının əsaslarını öyrənmisiniz: kəsmək, yapışdırmaq, bir az effektlər — növbəti səviyyəyə keçidin vaxtıdır.

Nəyə görə mətn əlavə etməliyik?

Videodakı mətn əvəzolunmaz rol oynayır — bu həm məlumat xarakterli mesajlardır, həm də üslublu titrlər və əlbəttə ki, sizin işlərinizi gecə yarısı qonşular yatarkən izləyənlər üçün xilaskar subtitrlərdir. MoviePy bunu rahat və üslublu etmək üçün imkan verir.

2. Mətnlə iş

Gəlin sadə mətn elementlərindən başlayaq. Bunun üçün MoviePy sizə mətnləri kliplərinizə əlavə etməyə imkan verən TextClip adlı əla bir funksiyanı təqdim edir.

Mətn klipinin yaradılması

Mətn klipinin əsas tənzimlənməsi təxminən belə görünür:


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

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

# Mətn klipi yaradırıq
txt_clip = TextClip("Salam, dünya!", fontsize=70, color='white')

# Mətn klipinin müddətini təyin edirik
txt_clip = txt_clip.set_duration(video.duration)

# Mətnin mövqesini təyin edirik
txt_clip = txt_clip.set_position('bottom')

# Videonu mətnlə birləşdiririk
video_with_text = CompositeVideoClip([video, txt_clip])

# Nəticəni saxlayırıq
video_with_text.write_videofile("output_video_with_text.mp4", fps=24)

Şrift və rəng tənzimləmələri

Mətnin rəngini, şriftini və ölçüsünü asanlıqla tənzimləyə bilərsiniz. Yuxarıdakı nümunədə mətnin rəngi ağdır, lakin siz məsələn, başqa bir rəngi seçə bilərsiniz:


txt_clip = TextClip("Salam, dünya!", fontsize=70, font='Amiri-bold', color='yellow')

Eyni zamanda, şrifti dəyişə bilərsiniz, bunun üçün lazım olan şriftin sisteminizdə quraşdırılmış olduğundan əmin olun.

3. Mətni ekran üzərində mövqeləndirmək

Mətni mövqeləndirmək üçün set_position() parametrindən istifadə etmək olar. Bu parametr həm mətn dəyərlərini (məsələn, 'center', 'bottom') həm də koordinatları qəbul edir.

Mətnin müxtəlif mövqelərdə yerləşdirilməsi


# Mətn yuxarı hissədə yerləşir
text_top = TextClip("Yuxarı mətn", fontsize=30, color='blue').set_position(('center', 'top')).set_duration(5)

# Mətn aşağı hissədə yerləşir
text_bottom = TextClip("Aşağı mətn", fontsize=30, color='green').set_position(('center', 'bottom')).set_duration(5)

# Mətn koordinatlar üzrə yerləşdirilib (x=100, y=100)
text_coords = TextClip("Koordinatlara görə mətn", fontsize=30, color='red').set_position((100, 100)).set_duration(5)

# Bütün mətnlərin video üzərinə yerləşdirilməsi
final_video = CompositeVideoClip([video, text_top, text_bottom, text_coords])
final_video.write_videofile("video_with_positioned_text.mp4")

Burada:

  • ('center', 'top'): Mətni mərkəzdə yuxarıda yerləşdirir.
  • ('center', 'bottom'): Mətni mərkəzdə aşağıda yerləşdirir.
  • (100, 100): Mətni konkret koordinatlar üzrə yerinə yetirir.

Mətni dinamik yeniləmə

Təkcə mətn əlavə etməklə kifayətlənməyək, onu daha canlı edək — məhz bu, videonu həqiqətən cəlbedici edir. Gəlin mətnə animasiya verək.


def move_text(t):
    return 10, 100 * t  # Mətnin zamanla aşağıya hərəkəti

txt_clip = txt_clip.set_pos(move_text).set_duration(3)

4. Subtitrlərlə iş

Subtitrlər müəyyən video anları ilə sinxronizasiya olunmuş mətndir. Biz onları fayllardan yükləyə və ya əl ilə yarada bilərik.

Subtitrlərin əl ilə əlavə olunması

Sadə bir nümunə ilə başlayaq, burada videoya subtitr əlavə edirik. Bunun üçün mətn klipi yaratmaq və onun ortaya çıxma vaxtını təyin etmək lazımdır:


# Subtitrləri yaradırıq
subtitles = [
    {"text": "Salam, dünya!", "start": 0, "end": 2},
    {"text": "Bu bir subtitrdır!", "start": 2.5, "end": 5}
]

# Videonu subtitrlərlə birləşdiririk
sub_clips = [TextClip(sub['text'], fontsize=50, color='white')
             .set_position(('center', 'bottom'))
             .set_start(sub['start'])
             .set_duration(sub['end'] - sub['start'])
             for sub in subtitles]

video_with_subtitles = CompositeVideoClip([video] + sub_clips)

video_with_subtitles.write_videofile("output_video_with_subtitles.mp4", fps=24)

Subtitrlərin fayldan yüklənməsi

Əgər sizin SRT formatında subtitr faylınız varsa, onları daha asan yükləyə bilərsiniz. MoviePy bu cür faylları yükləməyi dəstəkləyir, bu da prosesi sadələşdirir.

Subtitrlər adətən SRT və ya VTT formatlarında yaradılır, burada subtitr mətnləri və hər bir mətn parçasının nə zaman görünəcəyini və yox olacağını göstərən zaman işarələri olur. Məsələn, .srt faylı belə görünə bilər:


1
00:00:01,000 --> 00:00:04,000
Salam, bu bir subtitr nümunəsidir.

2
00:00:05,000 --> 00:00:08,000
Bu subtitr bir az sonra görünür.

Hər bir bölmə aşağıdakı hissələrdən ibarətdir:

  • Subtitr sətrinin nömrəsi.
  • saat:dəqiqə:saniyə,milisaniyə formatında zaman aralığı.
  • Subtitrin mətni.

Lazım olan kitabxanaların quraşdırılması

MoviePy .srt fayllarını birbaşa yükləməyi dəstəkləmir, amma bunu pysrt kitabxanasından istifadə edərək etmək mümkündür. Bu kitabxana .srt fayllarını yükləməyə və parse etməyə kömək edir və onlardan mətn klipləri yaratmaq üçün istifadə olunur.

Lazım olan kitabxanaları quraşdırın:

Bash

pip install moviepy pysrt

PySRT istifadə edərək subtitrlərin fayldan yüklənməsi

Əvvəlcə pysrt istifadə edərək .srt faylından subtitrləri yükləyirik və onları MoviePy ilə istifadə etmək üçün mətn kliplərinə çeviririk.

Subtitrlərin fayldan yüklənməsi və mətn kliplərinə çevrilməsi


import pysrt
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Videonun yüklənməsi
video = VideoFileClip("sample_video.mp4")

# Subtitrlərin fayldan yüklənməsi
subtitles = pysrt.open("subtitles.srt", encoding='utf-8')

# Hər bir subtitr üçün mətn kliplərinin siyahısı
subtitle_clips = []

# Subtitrlərin mətn kliplərinə çevrilməsi
for subtitle in subtitles:
    # Subtitr mətnləri
    text = subtitle.text
    
    # Subtitrin başlanğıc və bitmə vaxtları saniyə ilə
    start_time = subtitle.start.seconds + subtitle.start.milliseconds / 1000.0
    end_time = subtitle.end.seconds + subtitle.end.milliseconds / 1000.0
    duration = end_time - start_time

    # Subtitr üçün mətn klipinin yaradılması
    text_clip = TextClip(text, fontsize=24, color='white', font="Arial")
    text_clip = text_clip.set_position(('center', 'bottom')).set_start(start_time).set_duration(duration)
    
    # Mətn klipinin siyahıya əlavə olunması
    subtitle_clips.append(text_clip)

# Bütün subtitrlərin videoya əlavə olunması
final_video = CompositeVideoClip([video] + subtitle_clips)
final_video.write_videofile("video_with_subtitles.mp4")

Kodun izahı

  1. pysrt.open() ilə subtitrlərin yüklənməsi: Funksiya .srt subtitr faylını yükləyir və bütün sətirləri özündə saxlayan subtitles obyektini qaytarır.

  2. Hər bir subtitr üçün mətn kliplərinin yaradılması:

    • Mətn: subtitle.text vasitəsilə alınır.
    • Başlanğıc və bitmə vaxtları: MoviePy ilə uyğun olması üçün saniyələrə çevrilir.
    • Müddət: Başlanğıcla bitmə vaxtları arasındakı fərq kimi hesablanır.
  3. Mətnin tənzimlənməsi: Hər bir subtitr TextClip kimi mətn klipi olaraq yaradılır.

  4. Bütün subtitrlərin videoya əlavə olunması: CompositeVideoClip vasitəsilə bütün mətn klipləri əsas video klipə yerləşdirilir.

5. Titrlərin əlavə edilməsi

Başlanğıc və son titrlərin əlavə edilməsi

Titrlər adətən videonun əvvəlində və ya sonunda yerləşir və layihə, müəlliflər və digər məlumatlar haqqında məlumat ehtiva edir. Titrləri qara fonda yerləşdirilmiş mətn vasitəsilə hazırlamaq olar.

Başlanğıc və son titrlərin yaradılması


# Başlanğıc titrlərin yaradılması
intro_text = TextClip("Başlanğıc titrlər", fontsize=40, color='white', font="Arial")
intro_text = intro_text.set_position('center').set_duration(3).on_color(size=(video.w, video.h), color=(0, 0, 0), col_opacity=1)

# Əsas video klip
main_video = video.subclip(0, 10)  # Əsas video 0-dan 10-cu saniyəyədək

# Son titrlərin yaradılması
outro_text = TextClip("Son titrlər", fontsize=40, color='white', font="Arial")
outro_text = outro_text.set_position('center').set_duration(3).on_color(size=(video.w, video.h), color=(0, 0, 0), col_opacity=1)

# Titrlərlə əsas videonun birləşdirilməsi
final_video = concatenate_videoclips([intro_text, main_video, outro_text])
final_video.write_videofile("video_with_credits.mp4")

Burada:

  • on_color() mətn klipi üçün müəyyən rəngdə fon yaradır (bu halda qara).
  • concatenate_videoclips() titrlərlə əsas videonu bir faylda birləşdirir.

Mətnin göstərilmə vaxtının tənzimlənməsi

MoviePy-də mətnin göstərilmə vaxtını set_duration()set_start() metodları ilə təyin etmək olar. Bu, mətnin ekranda nə vaxt və nə qədər müddət ərzində görünəcəyini dəqiq idarə etməyə imkan verir.

Mətnin müəyyən vaxt ərzində göstərilməsi


# 2-ci saniyədə görünən və 3 saniyə göstərilən mətn klipi
delayed_text = TextClip("Gecikmiş mətn", fontsize=30, color='blue')
delayed_text = delayed_text.set_position('center').set_start(2).set_duration(3)

# Mətni videoya əlavə etmək
final_video = CompositeVideoClip([video, delayed_text])
final_video.write_videofile("video_with_timed_text.mp4")

Burada:

  • set_start(2) mətnin görünməsini 2-ci saniyəyədək gecikdirir.
  • set_duration(3) mətnin 3 saniyədən sonra yox olmasını müəyyənləşdirir.
1
Опрос
MoviePy ilə videomontajın əsasları,  47 уровень,  4 лекция
недоступен
MoviePy ilə videomontajın əsasları
MoviePy ilə videomontajın əsasları
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION