def cut_video(self):
if self.video_path:
if not os.path.exists(f"videos/{idd}/video/"):
os.makedirs(f"videos/{idd}/video/")
output_path = f"videos/{idd}/video/{sira}.mp4"
start_sec = self.start_time
end_sec = self.end_time
control_point_sec = self.audio_control_time
fade_in_duration = self.fade_in_duration
fade_out_duration = self.fade_out_duration
full_volume_duration = self.full_volume_duration
audio_effect_start_sec = max(0, control_point_sec - fade_in_duration)
full_volume_end_sec = control_point_sec + full_volume_duration
fade_out_start_sec = full_volume_end_sec
if self.video_label.blur_rects:
filter_complex = ""
prev_base_video = "[0:v]"
for i, rect in enumerate(self.video_label.blur_rects):
x = rect.x()
y = rect.y()
w = rect.width()
h = rect.height()
if i == 0:
filter_complex += f"{prev_base_video}split=2[base0][blurred0];"
filter_complex += f"[blurred0]crop={w}:{h}:{x}:{y},boxblur=10:10[box0];"
filter_complex += f"[base0][box0]overlay={x}:{y}[base1v];"
prev_base_video = "[base1v]"
else:
filter_complex += f"{prev_base_video}split=2[base{i}a][blurred{i}];"
filter_complex += f"[blurred{i}]crop={w}:{h}:{x}:{y},boxblur=10:10[box{i}];"
filter_complex += f"[base{i}a][box{i}]overlay={x}:{y}[base{i+1}v];"
prev_base_video = f"[base{i+1}v]"
filter_complex += f"[0:a]volume=0:enable='lt(t,{audio_effect_start_sec})'[silenced_audio];"
filter_complex += f"[silenced_audio]afade=in:ss={audio_effect_start_sec}:d={fade_in_du ration}[fadein_audio];"
filter_complex += f"[fadein_audio]afade=out:st={fade_out_start_sec}:d={fade_out_dura tion}[aout]"
cmd = [
'ffmpeg', '-y',
'-i', self.video_path,
'-ss', str(start_sec), '-to', str(end_sec),
'-filter_complex', filter_complex,
'-map', prev_base_video, '-map', '[aout]',
'-c:v', 'libx264', '-preset', 'medium', '-crf', '23',
'-c:a', 'aac', '-b:a', '128k', output_path
]
else:
filter_complex = f"[0:a]volume=0:enable='lt(t,{audio_effect_start_sec})'[silenced_audio];"
filter_complex += f"[silenced_audio]afade=in:ss={audio_effect_start_sec}:d={fade_in_du ration},volume=1:enable='between(t,{audio_effect_s tart_sec},{full_volume_end_sec})'[full_volume_audio];"
filter_complex += f"[full_volume_audio]afade=out:st={fade_out_start_sec}:d={fade_out_dura tion}[aout]"
cmd = [
'ffmpeg', '-y',
'-i', self.video_path,
'-ss', str(start_sec), '-to', str(end_sec),
'-filter_complex', filter_complex,
'-map', '0:v', '-map', '[aout]',
'-c:v', 'libx264', '-preset', 'medium', '-crf', '23',
'-c:a', 'aac', '-b:a', '128k', output_path
]
subprocess.run(cmd)
print(f"Video kaydedildi: {output_path}")