mirror of
https://github.com/k4yt3x/video2x.git
synced 2025-01-30 15:48:13 +00:00
2.0.2 fixed audio sizing and andio insersion issues
This commit is contained in:
parent
64b8c3d334
commit
52fd096826
@ -9,7 +9,7 @@ Last Modified: May 19, 2018
|
|||||||
Description: This class handles all FFMPEG related
|
Description: This class handles all FFMPEG related
|
||||||
operations.
|
operations.
|
||||||
|
|
||||||
Version 2.0.1
|
Version 2.0.2
|
||||||
"""
|
"""
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
@ -50,11 +50,11 @@ class FFMPEG:
|
|||||||
videoin {string} -- input video path
|
videoin {string} -- input video path
|
||||||
outpath {string} -- video output folder
|
outpath {string} -- video output folder
|
||||||
"""
|
"""
|
||||||
execute = "{} -i {} -vn -acodec copy {}\\output-audio.wav -y".format(self.ffmpeg_path, videoin, outpath)
|
execute = "{} -i {} -vn -acodec copy {}\\output-audio.aac -y".format(self.ffmpeg_path, videoin, outpath)
|
||||||
print(execute)
|
print(execute)
|
||||||
subprocess.call(execute)
|
subprocess.call(execute)
|
||||||
|
|
||||||
def to_vid(self, framerate, resolution, upscaled, ):
|
def convert_video(self, framerate, resolution, upscaled, ):
|
||||||
"""Converts images into videos
|
"""Converts images into videos
|
||||||
|
|
||||||
This method converts a set of images into a
|
This method converts a set of images into a
|
||||||
@ -79,6 +79,6 @@ class FFMPEG:
|
|||||||
Arguments:
|
Arguments:
|
||||||
upscaled {string} -- upscaled image folder
|
upscaled {string} -- upscaled image folder
|
||||||
"""
|
"""
|
||||||
execute = "{} -i {}\\no_audio.mp4 -i {}\\output-audio.wav -vcodec 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)
|
||||||
print(execute)
|
print(execute)
|
||||||
subprocess.call(execute)
|
subprocess.call(execute)
|
||||||
|
27
video2x.py
27
video2x.py
@ -38,7 +38,7 @@ import shutil
|
|||||||
import subprocess
|
import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
VERSION = '2.0.1'
|
VERSION = '2.0.2'
|
||||||
|
|
||||||
EXEC_PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
|
EXEC_PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
|
||||||
FRAMES = '{}\\frames'.format(EXEC_PATH) # Folder containing extracted frames
|
FRAMES = '{}\\frames'.format(EXEC_PATH) # Folder containing extracted frames
|
||||||
@ -50,7 +50,7 @@ FFMPEG_PATH = 'C:/Program Files (x86)/ffmpeg/bin/'
|
|||||||
WAIFU2X_PATH = '\"C:/Program Files (x86)/waifu2x-caffe/waifu2x-caffe-cui.exe\"'
|
WAIFU2X_PATH = '\"C:/Program Files (x86)/waifu2x-caffe/waifu2x-caffe-cui.exe\"'
|
||||||
|
|
||||||
|
|
||||||
def processArguments():
|
def process_arguments():
|
||||||
"""Processes CLI arguments
|
"""Processes CLI arguments
|
||||||
|
|
||||||
This function parses all arguments
|
This function parses all arguments
|
||||||
@ -59,8 +59,9 @@ def processArguments():
|
|||||||
"""
|
"""
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
control_group = parser.add_argument_group('Controls')
|
control_group = parser.add_argument_group('Controls')
|
||||||
control_group.add_argument('-f', '--factor', help='Factor to enlarge video by', action='store', default=2)
|
control_group.add_argument('--width', help='Output video width', action='store', type=int, default=False)
|
||||||
control_group.add_argument('-v', '--video', help='Specify video file', action='store', default=False)
|
control_group.add_argument('--height', help='Output video height', action='store', type=int, default=False)
|
||||||
|
control_group.add_argument('-v', '--video', help='Specify source video file', action='store', default=False)
|
||||||
control_group.add_argument('-o', '--output', help='Specify output file', action='store', default=False)
|
control_group.add_argument('-o', '--output', help='Specify output file', action='store', default=False)
|
||||||
control_group.add_argument('-y', '--model_type', help='Specify model to use', action='store', default='anime_style_art_rgb')
|
control_group.add_argument('-y', '--model_type', help='Specify model to use', action='store', default='anime_style_art_rgb')
|
||||||
control_group.add_argument('--cpu', help='Use CPU for enlarging', action='store_true', default=False)
|
control_group.add_argument('--cpu', help='Use CPU for enlarging', action='store_true', default=False)
|
||||||
@ -145,11 +146,9 @@ def video2x():
|
|||||||
|
|
||||||
info = get_vid_info()
|
info = get_vid_info()
|
||||||
# Analyze original video with ffprobe and retrieve framerate
|
# Analyze original video with ffprobe and retrieve framerate
|
||||||
width, height, framerate = info['streams'][0]['width'], info['streams'][0]['height'], float(
|
# width, height = info['streams'][0]['width'], info['streams'][0]['height']
|
||||||
Fraction(info['streams'][0]['avg_frame_rate']))
|
framerate = float(Fraction(info['streams'][0]['avg_frame_rate']))
|
||||||
avalon.info('Framerate: {}'.format(framerate))
|
avalon.info('Framerate: {}'.format(framerate))
|
||||||
final_resolution = str(width * int(args.factor)) + \
|
|
||||||
'x' + str(height * int(args.factor))
|
|
||||||
|
|
||||||
# Upscale images one by one using waifu2x
|
# Upscale images one by one using waifu2x
|
||||||
avalon.info('Starting to upscale extracted images')
|
avalon.info('Starting to upscale extracted images')
|
||||||
@ -160,13 +159,12 @@ def video2x():
|
|||||||
image_path = '{}\\{}'.format(dirpath, file)
|
image_path = '{}\\{}'.format(dirpath, file)
|
||||||
file_list.set_description('Upscaling: {}'.format(file))
|
file_list.set_description('Upscaling: {}'.format(file))
|
||||||
# avalon.dbgInfo('Upscaling: {}'.format(image_path))
|
# avalon.dbgInfo('Upscaling: {}'.format(image_path))
|
||||||
w2.upscale(image_path, UPSCALED, int(args.factor) *
|
w2.upscale(image_path, UPSCALED, args.width, args.height)
|
||||||
width, int(args.factor) * height)
|
|
||||||
avalon.info('Extraction complete')
|
avalon.info('Extraction complete')
|
||||||
|
|
||||||
# Frames to Video
|
# Frames to Video
|
||||||
avalon.info('Converting extracted frames into video')
|
avalon.info('Converting extracted frames into video')
|
||||||
fm.to_vid(framerate, final_resolution, UPSCALED)
|
fm.convert_video(framerate, '{}x{}'.format(args.width, args.height), UPSCALED)
|
||||||
|
|
||||||
# Extract and press audio in
|
# Extract and press audio in
|
||||||
avalon.info('Stripping audio track from original video')
|
avalon.info('Stripping audio track from original video')
|
||||||
@ -177,12 +175,14 @@ def video2x():
|
|||||||
|
|
||||||
# /////////////////// Execution /////////////////// #
|
# /////////////////// Execution /////////////////// #
|
||||||
|
|
||||||
args = processArguments()
|
args = process_arguments()
|
||||||
# Convert paths to absolute paths
|
# Convert paths to absolute paths
|
||||||
args.video = os.path.abspath(args.video)
|
args.video = os.path.abspath(args.video)
|
||||||
args.output = os.path.abspath(args.output)
|
args.output = os.path.abspath(args.output)
|
||||||
print_logo()
|
print_logo()
|
||||||
|
|
||||||
|
|
||||||
|
# Check if FFMPEG and waifu2x are present
|
||||||
if not os.path.isdir(FFMPEG_PATH):
|
if not os.path.isdir(FFMPEG_PATH):
|
||||||
avalon.error('FFMPEG binaries not found')
|
avalon.error('FFMPEG binaries not found')
|
||||||
avalon.error('Please specify FFMPEG binaries location in source code')
|
avalon.error('Please specify FFMPEG binaries location in source code')
|
||||||
@ -200,6 +200,9 @@ if not os.path.isfile(WAIFU2X_PATH.strip('\"')):
|
|||||||
if not args.video:
|
if not args.video:
|
||||||
avalon.error('You need to specify the video to process')
|
avalon.error('You need to specify the video to process')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
elif not args.width or not args.height:
|
||||||
|
avalon.error('You must specify output video width and height')
|
||||||
|
exit(1)
|
||||||
elif not args.output:
|
elif not args.output:
|
||||||
avalon.error('You need to specify the output video name')
|
avalon.error('You need to specify the output video name')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
Loading…
Reference in New Issue
Block a user