qur / intro.py
digidau's picture
Update intro.py
09b3ab2 verified
Raw
History Blame Contribute Delete
2.15 kB
import os
import subprocess
def prepend_intro(
intro_video,
main_video,
output_video
):
"""
Intro boleh:
- tanpa audio
- dengan audio
- codec apa saja
- resolusi apa saja
Akan dinormalisasi dulu lalu digabung
dengan video Quran utama.
"""
if not intro_video:
return main_video
os.makedirs("temp", exist_ok=True)
normalized_intro = "temp/intro_normalized.mp4"
print("=" * 60)
print("NORMALIZING INTRO")
print("=" * 60)
subprocess.run(
[
"ffmpeg",
"-y",
"-i",
intro_video,
# tambahkan audio silent
"-f",
"lavfi",
"-i",
"anullsrc=r=48000:cl=stereo",
"-shortest",
"-vf",
(
"scale=1920:1080:"
"force_original_aspect_ratio=decrease,"
"pad=1920:1080:(ow-iw)/2:(oh-ih)/2"
),
"-r",
"30",
"-c:v",
"libx264",
"-preset",
"veryfast",
"-crf",
"22",
"-c:a",
"aac",
"-ar",
"48000",
"-ac",
"2",
"-b:a",
"192k",
normalized_intro
],
check=True
)
print("=" * 60)
print("CONCAT INTRO + MAIN")
print("=" * 60)
subprocess.run(
[
"ffmpeg",
"-y",
"-i",
normalized_intro,
"-i",
main_video,
"-filter_complex",
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]",
"-map",
"[v]",
"-map",
"[a]",
"-c:v",
"libx264",
"-preset",
"veryfast",
"-crf",
"22",
"-c:a",
"aac",
"-b:a",
"192k",
output_video
],
check=True
)
print("=" * 60)
print("INTRO CONCAT SUCCESS")
print("=" * 60)
return output_video