diff --git a/utils/ffmpeg.py b/utils/ffmpeg.py index ccba26d..fc9105c 100644 --- a/utils/ffmpeg.py +++ b/utils/ffmpeg.py @@ -32,26 +32,26 @@ def get_duration(filename, skip_accurate_decode=False): duration=max(stream_durations) # sum? # print(f"Returning duration {duration} from ffmpeg null muxer stream duration for {filename}...") return duration - if filename.lower().endswith('.mp3'): - try: - duration=float(AudioSegment.from_mp3(filename).duration_seconds) - # print(f"Returning duration {duration} from AudioSegment for {filename}...") - return duration - except: - pass - try: - duration=float(AudioFileClip(filename).duration) - # print(f"Returning duration {duration} from AudioFileClip for {filename}...") - return duration - except: - pass - if filename.lower().endswith('.mp4'): - try: - duration=float(VideoFileClip(filename).duration) - # print(f"Returning duration {duration} from VideoFileClip for {filename}...") - return duration - except: - pass + # if filename.lower().endswith('.mp3'): + # try: + # duration=float(AudioSegment.from_mp3(filename).duration_seconds) + # # print(f"Returning duration {duration} from AudioSegment for {filename}...") + # return duration + # except: + # pass + # try: + # duration=float(AudioFileClip(filename).duration) + # # print(f"Returning duration {duration} from AudioFileClip for {filename}...") + # return duration + # except: + # pass + # if filename.lower().endswith('.mp4'): + # try: + # duration=float(VideoFileClip(filename).duration) + # # print(f"Returning duration {duration} from VideoFileClip for {filename}...") + # return duration + # except: + # pass probe_info=ffmpeg.probe(filename) duration=float(probe_info["format"]["duration"]) # print(f"Returning duration {duration} from ffprobe for {filename}...") diff --git a/video_creation/background.py b/video_creation/background.py index 2f6ebfd..b57e494 100644 --- a/video_creation/background.py +++ b/video_creation/background.py @@ -137,7 +137,7 @@ def chop_background(background_config: Dict[str, Tuple], video_length: int, redd else: audio_choice = f"{background_config['audio'][2]}-{background_config['audio'][1]}" audio_file_path=f"assets/backgrounds/audio/{audio_choice}" - audio_file_duration=get_duration(audio_file_path) + audio_file_duration=get_duration(audio_file_path, True) if bool(settings.config["settings"]["background"][f"background_audio_loop"]): background_looped_audio_file_path = f"assets/backgrounds/audio/looped-{audio_choice}" background_audio_loops = math.ceil(video_length / audio_file_duration) @@ -179,7 +179,7 @@ def chop_background(background_config: Dict[str, Tuple], video_length: int, redd video_choice = f"{background_config['video'][2]}-{background_config['video'][1]}" video_file_path = f"assets/backgrounds/video/{video_choice}" - video_file_duration=get_duration(video_file_path) + video_file_duration=get_duration(video_file_path, True) # print(f"Original duration before looping: {video_file_duration}") if bool(settings.config["settings"]["background"][f"background_video_loop"]): background_looped_video_file_path = f"assets/backgrounds/video/looped-{video_choice}" diff --git a/video_creation/final_video.py b/video_creation/final_video.py index 72be008..280e38a 100644 --- a/video_creation/final_video.py +++ b/video_creation/final_video.py @@ -42,7 +42,7 @@ def name_normalize(name: str) -> str: def prepare_background(reddit_id: str, W: int, H: int) -> str: output_path = f"assets/temp/{reddit_id}/background_noaudio.mp4" input_path = f"assets/temp/{reddit_id}/background.mp4" - input_duration=get_duration(input_path) + input_duration=get_duration(input_path, True) output = ( ffmpeg.input(input_path) .filter("crop", f"ih*({W}/{H})", "ih") @@ -129,8 +129,8 @@ def make_final_video( audio_clips.insert(1, ffmpeg.input(f"assets/temp/{reddit_id}/mp3/postaudio.mp3")) audio_clips_durations = [ - get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3"), - get_duration(f"assets/temp/{reddit_id}/mp3/postaudio.mp3") + get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3", True), + get_duration(f"assets/temp/{reddit_id}/mp3/postaudio.mp3", True) ] elif settings.config["settings"]["storymodemethod"] == 1: audio_clips = [ @@ -141,12 +141,12 @@ def make_final_video( audio_clips.insert(0, ffmpeg.input(f"assets/temp/{reddit_id}/mp3/title.mp3")) audio_clips_durations = [ - get_duration(f"assets/temp/{reddit_id}/mp3/postaudio-{i}.mp3") + get_duration(f"assets/temp/{reddit_id}/mp3/postaudio-{i}.mp3", True) for i in track(range(number_of_clips + 1), "🎶 Calculating audio file durations...") ] audio_clips_durations.insert( 0, - get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3") + get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3", True) ) print_substep("Calculated audio file durations successfully!", style="bold green") @@ -158,12 +158,12 @@ def make_final_video( audio_clips.insert(0, ffmpeg.input(f"assets/temp/{reddit_id}/mp3/title.mp3")) audio_clips_durations = [ - get_duration(f"assets/temp/{reddit_id}/mp3/{i}.mp3") + get_duration(f"assets/temp/{reddit_id}/mp3/{i}.mp3", True) for i in range(number_of_clips) ] audio_clips_durations.insert( 0, - get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3") + get_duration(f"assets/temp/{reddit_id}/mp3/title.mp3", True) ) audio_concat = ffmpeg.concat(*audio_clips, a=1, v=0) ffmpeg_progress_run(