mirror of
				https://github.com/k4yt3x/video2x.git
				synced 2025-10-31 12:50:59 +01:00 
			
		
		
		
	added feature to pass extra arguments to ffmpeg
This commit is contained in:
		
							parent
							
								
									af5186f874
								
							
						
					
					
						commit
						24e523afd3
					
				| @ -19,6 +19,7 @@ def enroll_settings(): | ||||
|     settings = {} | ||||
|     settings['waifu2x_path'] = Avalon.gets('waifu2x-caffe-cui.exe path: ') | ||||
|     settings['ffmpeg_path'] = Avalon.gets('ffmpeg binaries directory: ') | ||||
|     settings['ffmpeg_arguments'] = Avalon.gets('Extra arguments passed to ffmpeg: ') | ||||
|     return settings | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										18
									
								
								ffmpeg.py
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								ffmpeg.py
									
									
									
									
									
								
							| @ -22,9 +22,10 @@ class Ffmpeg: | ||||
|     and inserting audio tracks to videos. | ||||
|     """ | ||||
| 
 | ||||
|     def __init__(self, ffmpeg_path, outfile): | ||||
|         self.ffmpeg_path = ffmpeg_path | ||||
|     def __init__(self, ffmpeg_path, outfile, ffmpeg_arguments): | ||||
|         self.ffmpeg_path = '{}ffmpeg.exe'.format(ffmpeg_path) | ||||
|         self.outfile = outfile | ||||
|         self.ffmpeg_arguments = ffmpeg_arguments | ||||
| 
 | ||||
|     def extract_frames(self, videoin, outpath): | ||||
|         """Extract every frame from original videos | ||||
| @ -36,7 +37,8 @@ class Ffmpeg: | ||||
|             videoin {string} -- input video path | ||||
|             outpath {string} -- video output folder | ||||
|         """ | ||||
|         execute = "\"{}\" -i \"{}\" {}\\extracted_%0d.png -y".format(self.ffmpeg_path, videoin, outpath) | ||||
|         execute = '\"{}\" -i \"{}\" {}\\extracted_%0d.png -y {}'.format( | ||||
|             self.ffmpeg_path, videoin, outpath, self.ffmpeg_arguments) | ||||
|         print(execute) | ||||
|         subprocess.call(execute) | ||||
| 
 | ||||
| @ -50,7 +52,8 @@ class Ffmpeg: | ||||
|             videoin {string} -- input video path | ||||
|             outpath {string} -- video output folder | ||||
|         """ | ||||
|         execute = "\"{}\" -i \"{}\" -vn -acodec copy {}\\output-audio.aac -y".format(self.ffmpeg_path, videoin, outpath) | ||||
|         execute = '\"{}\" -i \"{}\" -vn -acodec copy {}\\output-audio.aac -y {}'.format( | ||||
|             self.ffmpeg_path, videoin, outpath, self.ffmpeg_arguments) | ||||
|         print(execute) | ||||
|         subprocess.call(execute) | ||||
| 
 | ||||
| @ -65,8 +68,8 @@ class Ffmpeg: | ||||
|             resolution {string} -- target video resolution | ||||
|             upscaled {string} -- source images folder | ||||
|         """ | ||||
|         execute = "\"{}\" -r {} -f image2 -s {} -i {}\\extracted_%d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p {}\\no_audio.mp4 -y".format( | ||||
|             self.ffmpeg_path, framerate, resolution, upscaled, upscaled) | ||||
|         execute = '\"{}\" -r {} -f image2 -s {} -i {}\\extracted_%d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p {}\\no_audio.mp4 -y {}'.format( | ||||
|             self.ffmpeg_path, framerate, resolution, upscaled, upscaled, self.ffmpeg_arguments) | ||||
|         print(execute) | ||||
|         subprocess.call(execute) | ||||
| 
 | ||||
| @ -79,6 +82,7 @@ class Ffmpeg: | ||||
|         Arguments: | ||||
|             upscaled {string} -- upscaled image folder | ||||
|         """ | ||||
|         execute = "\"{}\" -i {}\\no_audio.mp4 -i {}\\output-audio.aac -shortest -codec copy {} -y".format(self.ffmpeg_path, upscaled, upscaled, self.outfile) | ||||
|         execute = '\"{}\" -i {}\\no_audio.mp4 -i {}\\output-audio.aac -shortest -codec copy {} -y {}'.format( | ||||
|             self.ffmpeg_path, upscaled, upscaled, self.outfile, self.ffmpeg_arguments) | ||||
|         print(execute) | ||||
|         subprocess.call(execute) | ||||
|  | ||||
| @ -107,7 +107,7 @@ def get_video_info(): | ||||
|         dictionary -- original video information | ||||
|     """ | ||||
|     json_str = subprocess.check_output( | ||||
|         '{} -v quiet -print_format json -show_format -show_streams \"{}\"'.format('\"' + ffmpeg_path + 'ffprobe.exe\"', args.video)) | ||||
|         '\"{}ffprobe.exe\" -v quiet -print_format json -show_format -show_streams \"{}\"'.format(ffmpeg_path, args.video)) | ||||
|     return json.loads(json_str.decode('utf-8')) | ||||
| 
 | ||||
| 
 | ||||
| @ -199,7 +199,7 @@ def video2x(): | ||||
|         method = 'cudnn' | ||||
| 
 | ||||
|     # Initialize objects for ffmpeg and waifu2x-caffe | ||||
|     fm = Ffmpeg('\"' + ffmpeg_path + 'ffmpeg.exe\"', args.output) | ||||
|     fm = Ffmpeg(ffmpeg_path, args.output, ffmpeg_arguments) | ||||
|     w2 = Waifu2x(waifu2x_path, method, args.model_type) | ||||
| 
 | ||||
|     # Clear and create directories | ||||
| @ -286,7 +286,12 @@ args.output = os.path.abspath(args.output) | ||||
| config = read_config() | ||||
| waifu2x_path = config['waifu2x_path'] | ||||
| ffmpeg_path = config['ffmpeg_path'] | ||||
| ffmpeg_arguments = config['ffmpeg_arguments'] | ||||
| 
 | ||||
| # Add a forward slash to directory if not present | ||||
| # otherwise there will be a format error | ||||
| if ffmpeg_path[-1] != '/' and ffmpeg_path[-1] != '\\': | ||||
|     ffmpeg_path = '{}/'.format(ffmpeg_path) | ||||
| 
 | ||||
| # Check if FFMPEG and waifu2x are present | ||||
| if not os.path.isdir(ffmpeg_path): | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user