source_formats = ['webm',]
dest_formats = {
'mp3' : {'in': '', 'out': '-vn -acodec libmp3lame -aq 6'},
- 'mp4' : {'in': '', 'out': '-c:v libx264 -maxrate 1100k -c:a aac -b:a 128k'},
- 'png' : {'in': '-ss 0:0:10', 'out': '-frames:v 1 -y'}
+ 'mp4' : {'in': '', 'out': '-c:v libx264-c:a aac -b:a 96k'},
+ 'jpg' : {'in': '-ss 0:0:10', 'out': '-frames:v 1 -y'}
}
nvidia_formats = {'mp4': {'in': '', 'out': '-c:v h264_nvenc -maxrate 1100k -c:a aac -b:a 128k'}}
+ vaapi_formats = {'mp4': {'in': '-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi',
+ 'out': '-c:v h264_vaapi -c:a aac -b:a 96k'}}
+
date_limit = datetime.datetime(year=2024, month=2, day=27)
tmp_dir = "/tmp/"
def __init__(self, root_dir,
log_file='/tmp/telecaster.log',
nvidia_mode=False,
+ vaapi_mode=False,
auto_offset_mode=False,
- dry_run=False):
+ dry_run=False,
+ force_mode=False):
self.log_file = log_file
self.logger = Logger(self.log_file)
if self.nvidia_mode:
for f in self.nvidia_formats:
self.dest_formats[f] = self.nvidia_formats[f]
+ self.vaapi_mode = vaapi_mode
+ if self.vaapi_mode:
+ for f in self.vaapi_formats:
+ self.dest_formats[f] = self.vaapi_formats[f]
self.auto_offset_mode = auto_offset_mode
self.dry_run = dry_run
+ self.force_mode = force_mode
def get_ext_in_dir(self, extension, root):
files = os.listdir(root)
ffmpeg_args = self.dest_formats[dest_format]
dest = filename + '.' + dest_format
- if not os.path.exists(dest) or '--force' in self.args:
- if dest_format == 'png':
- offset_arg = ffmpeg_args['in']
- elif offset:
- offset_arg = '-ss ' + str(datetime.timedelta(seconds=offset))
- else:
- offset_arg = ''
+ if not os.path.exists(dest) or self.force_mode:
+ ffmpeg_args_in = ffmpeg_args['in']
+ if offset:
+ ffmpeg_args_in = ffmpeg_args_in + ' -ss -' + str(datetime.timedelta(seconds=offset))
- command = 'ffmpeg -loglevel 0 ' + offset_arg + ' -i "' + file + '" ' + ffmpeg_args['out'] +' -y "' + dest + '"'
+ command = 'ffmpeg -loglevel 0 ' + ffmpeg_args_in + ' -i "' + file + '" ' + ffmpeg_args['out'] +' -y "' + dest + '"'
print(command)
self.logger.logger.info(command)
for root, dirs, files in os.walk(self.root_dir):
for dir in dirs:
path = root + os.sep + dir
- print(path)
+ # print(path)
dir_files = os.listdir(path)
source_files = []
for file in dir_files:
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--dir', metavar='directory', type=str, help='media directory')
- parser.add_argument('--log', metavar='log_file', type=str, help='log file', default='/tmp/telecaster.log')
- parser.add_argument('--nvidia', metavar='nvidia', type=bool, help='use GPU nvidia encoder')
- parser.add_argument('--auto_offset', metavar='auto_offset', type=bool, help='add auto offset based on audio correlation')
- parser.add_argument('--dry_run', metavar='dry_run', type=bool, help='dry run')
+ parser.add_argument('--log', metavar='logfile', type=str, help='log file', default='/tmp/telecaster.log')
+ parser.add_argument('--nvidia', help='use GPU nvidia encoder', action="store_true")
+ parser.add_argument('--vaapi', help='use VAAPI encoder', action="store_true")
+ parser.add_argument('--auto_offset', help='add auto offset based on audio correlation', action="store_true")
+ parser.add_argument('--dry_run', help='dry run', action="store_true")
+ parser.add_argument('--force_mde', help='force mode', action="store_true")
args = parser.parse_args()
t = TeleCasterMastering(
args.dir,
log_file=args.log,
nvidia_mode=args.nvidia,
+ vaapi_mode=args.vaapi,
auto_offset_mode=args.auto_offset,
dry_run=args.dry_run
)