]> git.parisson.com Git - telecaster-server.git/commitdiff
add transcode script with libx264
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 22 Dec 2022 11:24:11 +0000 (12:24 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 22 Dec 2022 11:24:11 +0000 (12:24 +0100)
bin/transcode_nonv.py [new file with mode: 0644]
bin/transcode_nv.py
bin/transcode_nv2.py [deleted file]

diff --git a/bin/transcode_nonv.py b/bin/transcode_nonv.py
new file mode 100644 (file)
index 0000000..7ac7980
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+
+import os, sys, string
+import logging
+import datetime
+
+
+class Logger:
+    """A logging object"""
+
+    def __init__(self, file):
+        self.logger = logging.getLogger('myapp')
+        self.hdlr = logging.FileHandler(file)
+        self.formatter = logging.Formatter('%(asctime)s %(message)s')
+        self.hdlr.setFormatter(self.formatter)
+        self.logger.addHandler(self.hdlr)
+        self.logger.setLevel(logging.INFO)
+
+
+class TelemetaTranscode(object):
+    """docstring for TelemetaTranscode"""
+
+    source_formats = ['webm',]
+
+    dest_formats_nonv = {
+                   'mp3' : '-vn -acodec libmp3lame -aq 6',
+                   'mp4' : '-c:v libx264 -crf 17 -maxrate 1100k -bufsize 1835k -c:a aac -b:a 128k',
+                   'png' : '-ss 0:0:10',
+                  }
+
+    date_limit = datetime.datetime(year=2021, month=6, day=24)
+
+    def __init__(self, args):
+        self.args = args
+        self.log_file = args[-1]
+        self.root_dir = args[-2]
+        self.logger = Logger(self.log_file)
+
+    def get_ext_in_dir(self, extension, root):
+        files = os.listdir(root)
+        exts = []
+        for f in files:
+            name, ext = os.path.splitext(f)
+            ext = ext[1:]
+            if not ext in exts:
+                exts.append(ext)
+        return extension in exts
+
+    def run(self):
+        for root, dirs, files in os.walk(self.root_dir):
+            for file in files:
+                path = os.path.abspath(root + os.sep + file)
+                name, ext = os.path.splitext(file)
+                ext = ext[1:]
+                date_dir = datetime.datetime.fromtimestamp(os.path.getmtime(path))
+                if ext in self.source_formats and date_dir > self.date_limit:
+                    print(date_dir)
+                    for format, ffmpeg_args in self.dest_formats.iteritems():
+                        local_file = name + '.' + format
+                        dest = os.path.abspath(root + os.sep + local_file)
+                        local_files = os.listdir(root)
+                        if not (local_file in local_files or self.get_ext_in_dir(format, root)) or '--force' in self.args:
+                            if ext == 'webm' and format == 'ogg':
+                                ffmpeg_args = '-vn -acodec copy'
+                            if format == 'png':
+                                command = '/usr/local/bin/ffmpeg -loglevel 0 ' + ffmpeg_args + ' -i "' + path + '" -frames:v 1 -y "' + dest + '"'
+                            else: 
+                                command = '/usr/local/bin/ffmpeg -loglevel 0 -i "' + path + '" ' + ffmpeg_args + ' -y "' + dest + '"'
+                            self.logger.logger.info(command)
+                            if not '--dry-run' in self.args:
+                                os.system(command)
+                                print(command)
+
+
+if __name__ == '__main__':
+    t = TelemetaTranscode(sys.argv[1:])
+    t.run()
index b832ae5b95614554111e32f453bc6198a36e6542..c621e52065e3e3de780297428ee87f01dcfe7ba0 100644 (file)
@@ -20,8 +20,7 @@ class Logger:
 class TelemetaTranscode(object):
     """docstring for TelemetaTranscode"""
 
-    threads = 4
-    source_formats = ['webm', 'mp4']
+    source_formats = ['webm',]
     dest_formats = {
                    'mp3' : '-vn -acodec libmp3lame -aq 6',
                    'mp4' : '-c:v h264_nvenc -maxrate 1100k -c:a aac -b:a 128k',
@@ -36,7 +35,6 @@ class TelemetaTranscode(object):
         self.root_dir = args[-2]
         self.logger = Logger(self.log_file)
 
-
     def get_ext_in_dir(self, extension, root):
         files = os.listdir(root)
         exts = []
diff --git a/bin/transcode_nv2.py b/bin/transcode_nv2.py
deleted file mode 100644 (file)
index 40b8faa..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-
-import os, sys, string
-import logging
-
-
-class Logger:
-    """A logging object"""
-
-    def __init__(self, file):
-        self.logger = logging.getLogger('myapp')
-        self.hdlr = logging.FileHandler(file)
-        self.formatter = logging.Formatter('%(asctime)s %(message)s')
-        self.hdlr.setFormatter(self.formatter)
-        self.logger.addHandler(self.hdlr)
-        self.logger.setLevel(logging.INFO)
-
-
-class TelemetaTranscode(object):
-    """docstring for TelemetaTranscode"""
-
-    threads = 4
-    source_formats = ['webm',]
-    dest_formats = {
-                   'mp3' : '-vn -acodec libmp3lame -aq 3',
-                   'mp4' : '-c:v h264_nvenc -maxrate 1100k -c:a aac -b:a 96k',
-                   'png' : '-ss 0:0:10',
-                  }
-
-    def __init__(self, args):
-        self.args = args
-        self.log_file = args[-1]
-        self.root_dir = args[-2]
-        self.logger = Logger(self.log_file)
-
-
-    def get_ext_in_dir(self, extension, root):
-        files = os.listdir(root)
-        exts = []
-        for f in files:
-            name, ext = os.path.splitext(f)
-            ext = ext[1:]
-            if not ext in exts:
-                exts.append(ext)
-        return extension in exts
-
-    def run(self):
-        for root, dirs, files in os.walk(self.root_dir):
-            for file in files:
-                path = os.path.abspath(root + os.sep + file)
-                name, ext = os.path.splitext(file)
-                ext = ext[1:]
-                if ext in self.source_formats:
-                    for format, ffmpeg_args in self.dest_formats.iteritems():
-                        local_file = name + '.' + format
-                        dest = os.path.abspath(root + os.sep + local_file)
-                        local_files = os.listdir(root)
-                        if not (local_file in local_files or self.get_ext_in_dir(format, root)) or '--force' in self.args:
-                            if ext == 'webm' and format == 'ogg':
-                                ffmpeg_args = '-vn -acodec copy'
-                            if format == 'png':
-                                command = 'ffmpeg -loglevel 0 ' + ffmpeg_args + ' -i "' + path + '" -frames:v 1 -y "' + dest + '"'
-                            else: 
-                                command = 'ffmpeg -loglevel 0 -i "' + path + '" ' + ffmpeg_args + ' -y "' + dest + '"'
-                            self.logger.logger.info(command)
-                            if not '--dry-run' in self.args:
-                                os.system(command)
-                                print(command)
-
-
-if __name__ == '__main__':
-    t = TelemetaTranscode(sys.argv[1:])
-    t.run()