]> git.parisson.com Git - telecaster-server.git/commitdiff
merge ffmpeg options, fix time offset
authorGuillaume Pellerin <guillaume.pellerin@free.fr>
Tue, 27 Feb 2024 15:44:41 +0000 (16:44 +0100)
committerGuillaume Pellerin <guillaume.pellerin@free.fr>
Tue, 27 Feb 2024 15:44:41 +0000 (16:44 +0100)
bin/mastering/mastering.py

index 873c239201c703f736fc8b46cf5cb399e65f8172..d50a712400a90d554cb85e4e4d3a2e296b4d3c91 100755 (executable)
@@ -30,18 +30,23 @@ class TeleCasterMastering(object):
     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)
@@ -50,8 +55,13 @@ class TeleCasterMastering(object):
         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)
@@ -112,15 +122,12 @@ class TeleCasterMastering(object):
             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)
@@ -133,7 +140,7 @@ class TeleCasterMastering(object):
         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:
@@ -165,15 +172,18 @@ class TeleCasterMastering(object):
 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
         )