44import os
55import subprocess
66from src .config import GPU_EXIST , SRC_DIR
7- from src .burn .generate_danmakus import get_resolution , process_danmakus
8- from src .burn .generate_subtitles import generate_subtitles
9- from src .burn .render_video import render_video
7+ from src .danmaku .generate_danmakus import get_resolution , process_danmakus
8+ from src .subtitle .generate_subtitles import generate_subtitles
9+ from src .burn .render_command import render_command
1010from src .upload .extract_video_info import get_video_info
1111from src .log .logger import scan_log
1212
@@ -20,26 +20,26 @@ def normalize_video_path(filepath):
2020 new_date_time = f"{ date_time_parts [0 ][:4 ]} -{ date_time_parts [0 ][4 :6 ]} -{ date_time_parts [0 ][6 :8 ]} -{ date_time_parts [1 ]} -{ date_time_parts [2 ]} "
2121 return filepath .rsplit ('/' , 1 )[0 ] + '/' + parts [0 ] + '_' + new_date_time + '-.mp4'
2222
23- def merge_videos (in_final_video , title , artist , date , merge_list ):
23+ def merge_command (in_final_video , title , artist , date , merge_list ):
2424 """Merge the video segments and preserve the first video's metadata
2525 Args:
2626 in_final_video: str, the path of videos will be merged
2727 """
28- merge_command = [
28+ command = [
2929 'ffmpeg' , '-f' , 'concat' , '-safe' , '0' , '-i' , merge_list , '-metadata' , f'title={ title } ' , '-metadata' , f'artist={ artist } ' , '-metadata' , f'date={ date } ' , '-use_wallclock_as_timestamps' , '1' ,
3030 '-c' , 'copy' , in_final_video
3131 ]
3232 try :
3333 scan_log .info ("Begin merging videos..." )
34- result = subprocess .run (merge_command , check = True , capture_output = True , text = True )
34+ result = subprocess .run (command , check = True , capture_output = True , text = True )
3535 scan_log .debug (f"FFmpeg output: { result .stdout } " )
3636 if result .stderr :
3737 scan_log .debug (f"FFmpeg debug: { result .stderr } " )
3838 except subprocess .CalledProcessError as e :
3939 scan_log .error (f"Error: { e .stderr } " )
4040 subprocess .run (['rm' , merge_list ], stdout = subprocess .DEVNULL , stderr = subprocess .DEVNULL )
4141
42- def render_and_merge (video_path_list ):
42+ def render_then_merge (video_path_list ):
4343 title = ''
4444 artist = ''
4545 date = ''
@@ -72,7 +72,7 @@ def render_and_merge(video_path_list):
7272 if GPU_EXIST :
7373 generate_subtitles (original_video_path )
7474 # Burn danmaku or subtitles into the videos
75- render_video (original_video_path , video_to_be_merged , subtitle_font_size , subtitle_margin_v )
75+ render_command (original_video_path , video_to_be_merged , subtitle_font_size , subtitle_margin_v )
7676 if not os .path .exists (merge_list ):
7777 open (merge_list , 'w' ).close ()
7878 with open (merge_list , 'a' ) as f :
@@ -87,15 +87,8 @@ def render_and_merge(video_path_list):
8787 # test_path = original_video_path[:-4]
8888 # os.rename(original_video_path, test_path)
8989
90- merge_videos (output_video_path , title , artist , date , merge_list )
90+ merge_command (output_video_path , title , artist , date , merge_list )
9191 subprocess .run (['rm' , '-r' , tmp ])
9292
9393 with open (f"{ SRC_DIR } /upload/uploadVideoQueue.txt" , "a" ) as file :
94- file .write (f"{ output_video_path } \n " )
95-
96- if __name__ == '__main__' :
97- parser = argparse .ArgumentParser (description = 'Danmaku burns' )
98- parser .add_argument ('video_path' , type = str , help = 'Path to the Video file' )
99- args = parser .parse_args ()
100- video_path = args .video_path
101- render_and_merge (video_path )
94+ file .write (f"{ output_video_path } \n " )
0 commit comments