Cara Memotong Banyak Video Otomatis dengan Python dan MoviePy (Lengkap dengan Skrip Siap Pakai)

Cara Memotong Banyak Video Otomatis dengan Python dan MoviePy (Lengkap dengan Skrip Siap Pakai)

Memotong video menjadi beberapa bagian kecil biasanya membutuhkan aplikasi berat seperti Adobe Premiere atau software editing lain. Namun, bagi kamu yang ingin proses otomatis dan cepat, terutama jika file video sangat banyak, Python menyediakan solusi sederhana menggunakan library MoviePy.

Pada artikel ini kita membahas skrip Python yang mampu memotong semua video di dalam satu folder secara otomatis menjadi beberapa bagian berdasarkan durasi tertentu (dalam menit atau detik). Sangat cocok untuk kebutuhan:

  • Membuat konten video reel atau shorts

  • Memecah video panjang untuk upload ke media sosial

  • Memproses materi pembelajaran atau dokumentasi

  • Editing otomatis tanpa aplikasi berat

Berikut penjelasan lengkapnya.


1. Fungsi Utama Skrip

Skrip menyediakan satu fungsi inti bernama:

def potong_video_folder(folder_path, durasi, satuan="menit"):

Fungsi ini bertugas:

  1. Mengecek apakah folder video tersedia

  2. Mendeteksi semua file video dalam folder

  3. Mengonversi durasi potongan ke detik

  4. Menghitung jumlah potongan berdasarkan durasi video

  5. Membuat folder output khusus untuk setiap video

  6. Memotong video menjadi beberapa bagian dengan subclip()

  7. Menyimpan hasil pemotongan dengan format MP4


2. Mendukung Banyak Format Video

Ekstensi video yang didukung:

  • .mp4

  • .mov

  • .avi

  • .mkv

  • .flv

  • .wmv

Sehingga kamu tidak perlu mengubah format terlebih dahulu. Skrip langsung memproses selama file termasuk format di atas.


3. Konversi Durasi: Menit atau Detik

Skrip juga fleksibel karena mendukung dua satuan durasi:

  • menit

  • detik

Contoh:

potong_video_folder("folderku", 3, "menit")

Artinya tiap potongan berdurasi 3 menit.


4. Cara Kerja Pemotongan Video

Skrip memanfaatkan fungsi:

video.subclip(start, end)

Dengan parameter:

  • start → waktu mulai potongan

  • end → waktu di mana potongan selesai

Lalu setiap potongan disimpan dalam folder:

/nama_video_parts/

Dengan nama file:

nama_video_part_1.mp4
nama_video_part_2.mp4
...

5. Skrip Lengkap (Siap Dipakai)

Di bawah ini adalah skrip lengkap yang dijelaskan dalam artikel:

import os
import math
from moviepy.editor import VideoFileClip
def potong_video_folder(folder_path, durasi, satuan="menit"):
"""
Memotong semua video di folder tertentu menjadi beberapa bagian.
folder_path : str -> path folder berisi video
durasi : float/int -> lama tiap potongan (menit atau detik)
satuan : str -> "menit" atau "detik"
"""
if not os.path.exists(folder_path):
print("❌ Folder tidak ditemukan:", folder_path)
return
# Konversi durasi ke detik
if satuan.lower() in ["menit", "minute", "minutes", "m"]:
durasi_potongan = durasi * 60
elif satuan.lower() in ["detik", "second", "seconds", "s"]:
durasi_potongan = durasi
else:
print("⚠️ Satuan tidak dikenal, gunakan 'menit' atau 'detik'.")
return
# Daftar ekstensi video umum
ekstensi_video = (".mp4", ".mov", ".avi", ".mkv", ".flv", ".wmv")
# Loop semua file video di folder
for nama_file in os.listdir(folder_path):
if not nama_file.lower().endswith(ekstensi_video):
continue # skip file non-video
input_path = os.path.join(folder_path, nama_file)
print(f"\nšŸŽž️ Memproses: {nama_file}")
# Buka video
video = VideoFileClip(input_path)
total_durasi = video.duration
jumlah_potongan = math.ceil(total_durasi / durasi_potongan)
print(f"šŸŽ¬ Durasi total: {total_durasi:.2f} detik")
print(f"✂️ Membagi menjadi {jumlah_potongan} bagian, tiap {durasi} {satuan}\n")
# Buat folder output khusus video ini
nama_tanpa_ext = os.path.splitext(nama_file)[0]
output_folder = os.path.join(folder_path, f"{nama_tanpa_ext}_parts")
os.makedirs(output_folder, exist_ok=True)
# Proses pemotongan
for i in range(jumlah_potongan):
start = i * durasi_potongan
end = min((i + 1) * durasi_potongan, total_durasi)
output_filename = os.path.join(output_folder, f"{nama_tanpa_ext}_part_{i+1}.mp4")
print(f"🪚 Potongan {i+1}: {start:.2f}s - {end:.2f}s ...")
subclip = video.subclip(start, end)
subclip.write_videofile(output_filename, codec="libx264", audio_codec="aac", fps=video.fps)
print(f"✅ Selesai memotong {nama_file}. Hasil di folder: {output_folder}")
print("\nšŸŽ‰ Semua video selesai diproses!")
# ==== Contoh Penggunaan ====
if __name__ == "__main__":
folder_video = "dracin" # Ganti sesuai folder kamu
durasi_potongan = 5 # Bisa 1, 2, 5, 90, dst.
satuan_durasi = "menit" # Pilih: "menit" atau "detik"
potong_video_folder(folder_video, durasi_potongan, satuan_durasi)

6. Contoh Pemakaian

Untuk memotong semua video dalam folder video_mentah menjadi potongan 30 detik:

potong_video_folder("video_mentah", 30, "detik")

Atau potongan 2 menit:

potong_video_folder("video_mentah", 2, "menit")

7. Keunggulan Skrip Ini

  • ✔ Otomatis memotong semua video dalam folder

  • ✔ Mendukung banyak format

  • ✔ Tidak perlu software editing

  • ✔ Hasil rapi dalam folder terpisah

  • ✔ Codec libx264 memastikan kualitas tetap bagus

  • ✔ Proses cepat, cocok untuk batch processing


Kesimpulan

Skrip Python ini adalah solusi praktis dan efisien untuk memotong video dalam jumlah banyak secara otomatis. Dengan bantuan MoviePy, proses editing menjadi jauh lebih cepat dan ringan dibandingkan menggunakan aplikasi editing tradisional.

Jika kamu seorang konten kreator, editor video, atau sering bekerja dengan file video panjang, skrip ini wajib kamu coba.