mirror of
https://github.com/k4yt3x/video2x.git
synced 2025-01-30 15:48:13 +00: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…
Reference in New Issue
Block a user