Cara Memperpanjang Durasi Banyak Video Secara Otomatis dengan Python + FFmpeg (Lengkap dengan Script Siap Pakai)

🎬 Cara Memperpanjang Durasi Banyak Video Secara Otomatis dengan Python + FFmpeg (Lengkap dengan Script Siap Pakai)

Memperpanjang (looping) durasi video biasanya dilakukan dengan aplikasi editing seperti Premiere Pro, CapCut, atau DaVinci Resolve. Namun, untuk jumlah video yang banyak, proses manual tentu sangat memakan waktu.

Solusinya: otomatisasi menggunakan Python dan FFmpeg.

Pada artikel ini, kita akan membahas script Python lengkap yang mampu:

✔ Memproses semua video dalam satu folder
✔ Menentukan durasi target secara acak (misal 5–10 menit)
✔ Melakukan looping otomatis tanpa mengurangi kualitas
✔ Menggunakan FFmpeg sehingga sangat cepat
✔ Output rapi di folder khusus

Sangat cocok untuk:

  • Membuat video panjang untuk YouTube, TikTok Live, atau Shopee Live

  • Menyiapkan background loop video

  • Membuat variasi durasi untuk konten filler

  • Memperpanjang video efek, ambience, atau animasi pendek

Mari kita mulai!


1. Gambaran Fitur Script

Script Python di bawah ini memiliki fungsi utama untuk:

🟡 1. Membaca semua file video dalam satu folder

Format yang didukung antara lain:

.mp4, .mov, .mkv, .avi, .flv, .webm, .wmv

🟡 2. Mengambil durasi asli video (FFmpeg duration parser)

Dengan perintah:

ffmpeg -i video.mp4

Script otomatis mendeteksi durasi video dalam detik.

🟡 3. Menghitung berapa kali video harus di-loop

Jika durasi asli 10 detik dan target 60 detik, script akan mengulang 6x.

🟡 4. Menggabungkan video menggunakan FFmpeg concat

Tanpa rendering ulang sehingga proses sangat cepat.

🟡 5. Durasi target acak

Script membuat video panjang dengan durasi:

Min = 300 detik (5 menit)
Max = 600 detik (10 menit)

Durasi bisa kamu ubah sesuai kebutuhan.


2. Script Lengkap (Siap Copy–Paste dan Pakai)

Berikut script Python yang telah kamu siapkan:

import os
import subprocess
import math
import re
import random
# === Konfigurasi ===
SOURCE_FOLDER = r"C:\Users\SMK\Desktop\panjangin_video"
OUTPUT_FOLDER = os.path.join(SOURCE_FOLDER, "output")
MIN_DURATION = 300 # dalam detik (misal: 5 menit)
MAX_DURATION = 600 # dalam detik (misal: 10 menit)
VIDEO_EXTENSIONS = ['.mp4', '.mov', '.mkv', '.avi', '.flv', '.webm', '.wmv']
# === Fungsi untuk ambil durasi video ===
def get_video_duration(video_path):
"""Ambil durasi video dalam detik."""
result = subprocess.run(
['ffmpeg', '-i', video_path],
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
duration_line = [line for line in result.stderr.split('\n') if "Duration" in line]
if not duration_line:
raise ValueError(f"Durasi tidak ditemukan untuk {video_path}")
time_str = re.search(r'Duration: (\d+):(\d+):(\d+.\d+)', duration_line[0])
h, m, s = map(float, time_str.groups())
return h * 3600 + m * 60 + s
# === Fungsi untuk memperpanjang video ===
def loop_video(input_path, output_path, target_duration):
original_duration = get_video_duration(input_path)
loop_count = math.ceil(target_duration / original_duration)
print(f"\n[PROCESSING] {os.path.basename(input_path)}")
print(f" - Durasi asli: {original_duration:.2f} detik")
print(f" - Target durasi: {target_duration} detik")
print(f" - Looping sebanyak: {loop_count}x")
# Buat file list.txt
list_file = os.path.join(SOURCE_FOLDER, "list.txt")
safe_path = input_path.replace("\\", "/") # Perbaikan penting
with open(list_file, "w") as f:
for _ in range(loop_count):
f.write(f"file '{safe_path}'\n")
# Proses ffmpeg concat
subprocess.run([
'ffmpeg', '-y', '-f', 'concat', '-safe', '0', '-i', list_file,
'-c', 'copy', '-t', str(target_duration), output_path
], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
os.remove(list_file) # bersihkan list.txt
print(f"[DONE] Simpan ke: {output_path}")
# === Main Program ===
def main():
if not os.path.exists(OUTPUT_FOLDER):
os.makedirs(OUTPUT_FOLDER)
video_files = [f for f in os.listdir(SOURCE_FOLDER)
if os.path.isfile(os.path.join(SOURCE_FOLDER, f)) and
os.path.splitext(f)[1].lower() in VIDEO_EXTENSIONS]
if not video_files:
print("Tidak ada file video ditemukan di folder sumber.")
return
for video_file in video_files:
input_path = os.path.join(SOURCE_FOLDER, video_file)
output_path = os.path.join(OUTPUT_FOLDER, video_file)
try:
target_duration = random.randint(MIN_DURATION, MAX_DURATION)
loop_video(input_path, output_path, target_duration)
except Exception as e:
print(f"[ERROR] {video_file}: {e}")
if __name__ == "__main__":
main()

3. Cara Menggunakan Script

1️⃣ Install Python & FFmpeg

Python minimal versi 3.8
FFmpeg wajib terinstall dan sudah masuk ke PATH.

2️⃣ Tempatkan semua video di folder sumber

Contoh:

C:\Users\SMK\Desktop\panjangin_video

3️⃣ Jalankan script

Gunakan perintah:

python panjangin.py

4️⃣ Semua hasil akan muncul di folder

panjangin_video/output/

4. Keunggulan Script Ini

Tanpa render ulang (pakai codec copy → super cepat)
✔ Memproses banyak video otomatis
✔ Durasi acak untuk variasi konten
✔ Aman untuk semua format video populer
✔ Hasil tetap full quality
✔ Cocok untuk pekerjaan massal


5. Kesimpulan

Script Python ini memberikan solusi cepat dan efisien untuk memperpanjang durasi banyak video sekaligus menggunakan FFmpeg. Bagi kamu yang bekerja sebagai content creator, admin live streaming, hingga video editor, otomatisasi seperti ini bisa menghemat banyak waktu.