:
ini codenya yaa #!/usr/bin/env python3
# Ini adalah daftar "kotak peralatan" yang dipinjam program untuk bisa bekerja
import os
import sys
import time
import cv2
from PIL import Image
import numpy as np
import platform
# Ini adalah fungsi untuk membuat gerakan video jadi lebih halus
def interpolate_frames(frame1, frame2, factor):
# Jika salah satu gambar tidak ada, gunakan gambar yang tersedia saja
if frame1 is None or frame2 is None:
return frame1 if frame1 is not None else frame2
# Mencampur dua gambar supaya perpindahannya tidak patah-patah
return cv2.addWeighted(frame1, 1 - factor, frame2, factor, 0)
# Ini fungsi untuk mengubah gambar asli menjadi huruf-huruf (ASCII art)
def frame_to_ascii(frame, width=80):
# Mengubah gambar berwarna menjadi hitam putih
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Menghitung ukuran gambar agar pas di layar
height, width_orig = gray.shape
aspect_ratio = height / width_orig
new_height = int(aspect_ratio * width * 0.43)
# Mengubah ukuran gambar agar tidak terlalu besar
resized = cv2.resize(gray, (width, new_height))
# Mengubah data gambar agar bisa diolah menjadi huruf
img = Image.fromarray(resized)
# Ini adalah daftar huruf/simbol dari yang paling "terang" sampai "gelap"
chars = " :;;##"
# Mengubah tiap titik warna (pixel) menjadi huruf
pixels = list(img.getdata())
char_length = len(chars)
ascii_str = ''.join([chars[min(pixel // 25, char_length - 1)] for pixel in pixels])
# Menyusun huruf-huruf tersebut menjadi baris demi baris
ascii_img = '\n'.join([ascii_str[i:i+width] for i in range(0, len(ascii_str), width)])
return ascii_img
# Ini fungsi utama untuk menjalankan videonya
def play_video(video_path, max_duration=20, ascii_width=80, interpolation_factor=2):
# Membuka file videonya
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print(f"[!] Error: Tidak bisa membuka video {video_path}")
return
# Mengambil info kecepatan video asli
original_fps = cap.get(cv2.CAP_PROP_FPS)
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
2026-04-28 01:39:41