From: yomguy Date: Mon, 8 Apr 2013 13:16:35 +0000 (+0200) Subject: merge & reorganize video mastering utils X-Git-Tag: 1.4.5~39 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=5dac660f77da1dac0984dd6c4752c7c06b196198;p=telemeta.git merge & reorganize video mastering utils --- diff --git a/telemeta/util/kdenlive/auto_fade.py b/telemeta/util/kdenlive/auto_fade.py old mode 100644 new mode 100755 diff --git a/telemeta/util/kdenlive/auto_fade_batch.py b/telemeta/util/kdenlive/auto_fade_batch.py old mode 100644 new mode 100755 diff --git a/telemeta/util/kdenlive/mlt_fix_threads.sh b/telemeta/util/kdenlive/mlt_fix_threads.sh new file mode 100755 index 00000000..cf2c2796 --- /dev/null +++ b/telemeta/util/kdenlive/mlt_fix_threads.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +for file in `ls $1/*.sh`; do +sudo perl -pi -e 's/threads=2/threads=8/g' $1/$file +sudo perl -pi -e 's/threads=4/threads=8/g' $1/$file +sudo perl -pi -e 's/threads=6/threads=8/g' $1/$file +done diff --git a/telemeta/util/kdenlive/mlt_process_batch.py b/telemeta/util/kdenlive/mlt_process_batch.py new file mode 100755 index 00000000..b620ffd5 --- /dev/null +++ b/telemeta/util/kdenlive/mlt_process_batch.py @@ -0,0 +1,13 @@ + +import os, sys + +if __name__ == '__main__': + dir = sys.argv[-1] + + for filename in os.listdir(dir): + prefix, extension = os.path.splitext(filename) + path = dir + os.sep + filename + flag = path + '.processed' + if 'sh' in extension and not os.path.exists(flag): + os.system('nice -n 19 ' + path) + os.system('touch ' + flag) diff --git a/telemeta/util/kdenlive/mlt_threads.sh b/telemeta/util/kdenlive/mlt_threads.sh deleted file mode 100644 index cf2c2796..00000000 --- a/telemeta/util/kdenlive/mlt_threads.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -for file in `ls $1/*.sh`; do -sudo perl -pi -e 's/threads=2/threads=8/g' $1/$file -sudo perl -pi -e 's/threads=4/threads=8/g' $1/$file -sudo perl -pi -e 's/threads=6/threads=8/g' $1/$file -done diff --git a/telemeta/util/kdenlive/process_batch.py b/telemeta/util/kdenlive/process_batch.py deleted file mode 100644 index b620ffd5..00000000 --- a/telemeta/util/kdenlive/process_batch.py +++ /dev/null @@ -1,13 +0,0 @@ - -import os, sys - -if __name__ == '__main__': - dir = sys.argv[-1] - - for filename in os.listdir(dir): - prefix, extension = os.path.splitext(filename) - path = dir + os.sep + filename - flag = path + '.processed' - if 'sh' in extension and not os.path.exists(flag): - os.system('nice -n 19 ' + path) - os.system('touch ' + flag) diff --git a/telemeta/util/transcode/create_thumbs.py b/telemeta/util/transcode/create_thumbs.py new file mode 100755 index 00000000..dc3fd206 --- /dev/null +++ b/telemeta/util/transcode/create_thumbs.py @@ -0,0 +1,42 @@ +#!/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('%(message)s') + self.hdlr.setFormatter(self.formatter) + self.logger.addHandler(self.hdlr) + self.logger.setLevel(logging.INFO) + +log_file = 'thumbs.log' +logger = Logger(log_file) +root_dir = sys.argv[-1] +args = sys.argv[1:-1] +source_format = 'webm' +done = [] +preview_tc = '00:00:05' + +if os.path.exists(log_file): + f = open(log_file, 'r') + for line in f.readlines(): + done.append(line[:-1]) + f.close() + +for root, dirs, files in os.walk(root_dir): + for file in files: + path = os.path.abspath(root + os.sep + file) + name, ext = os.path.splitext(file) + if ext[1:] == source_format: + dest = os.path.abspath(root + os.sep + name + '.png') + if not dest in done or '--force' in args: + command = 'ffmpeg -ss '+ preview_tc + ' -i ' + path + ' -y ' + dest + os.system(command) + logger.logger.info(dest) + +print "DONE!" diff --git a/telemeta/util/transcode/remux_fix_media.py b/telemeta/util/transcode/remux_fix_media.py new file mode 100755 index 00000000..c5691691 --- /dev/null +++ b/telemeta/util/transcode/remux_fix_media.py @@ -0,0 +1,110 @@ +#!/usr/bin/python + +import os, sys, psutil +import datetime +from ebml.utils.ebml_data import * + +class FixCheckMedia(object): + + def __init__(self, dir): + self.dir = dir + self.tmp_dir = '/home/telecaster/tmp/' + if not os.path.exists(self.tmp_dir): + os.makedirs(self.tmp_dir) + + def process(self): + webm_fixed_log = 'webm.fixed' + webm_tofix_log = 'webm.tofix' + mp3_fixed_log = 'mp3.fixed' + mp3_tofix_log = 'mp3.tofix' + + for root, dirs, files in os.walk(self.dir): + for filename in files: + source = root + os.sep + filename + name = os.path.splitext(filename)[0] + ext = os.path.splitext(filename)[1][1:] + + if ext == 'webm' and os.path.getsize(source): + dir_files = os.listdir(root) + + if not webm_fixed_log in dir_files: + print source + self.fix_webm(source) + f = open(root + os.sep + webm_fixed_log, 'w') + f.close() + if os.path.exists(root + os.sep + webm_tofix_log): + os.remove(root + os.sep + webm_tofix_log) + + if mp3_tofix_log in dir_files and not mp3_fixed_log in dir_files: + for file in dir_files: + dest_ext = os.path.splitext(file)[1][1:] + if dest_ext == 'mp3': + dest = root + os.sep + file + print dest + self.fix_mp3(source, dest) + f = open(root + os.sep + mp3_fixed_log, 'w') + f.close() + os.remove(root + os.sep + mp3_tofix_log) + #break + + + def hard_fix_webm(self, path): + try: + tmp_file = self.tmp_dir + 'out.webm ' + command = 'ffmpeg -loglevel 0 -i '+ path + ' -vcodec libvpx -vb 500k -acodec libvorbis -aq 7 -f webm -y ' + tmp_file + ' > /dev/null' + print command + os.system(command) + command = 'mv ' + tmp_file + path + os.system(command) + except: + pass + + + def fix_webm(self, path): + try: + tmp_file = self.tmp_dir + 'out.webm' + command = '/usr/local/bin/ffmpeg -loglevel 0 -i ' + path + ' -vcodec copy -acodec copy -f webm -y ' + tmp_file + ' > /dev/null' + print command + os.system(command) + ebml_obj = EBMLData(tmp_file) + offset = ebml_obj.get_first_cluster_seconds() + command = '/usr/local/bin/ffmpeg -loglevel 0 -ss ' + str(offset) + ' -i ' + tmp_file + ' -vcodec copy -acodec copy -f webm -y ' + path + ' > /dev/null' + print command + os.system(command) + except: + pass + + def fix_mp3(self, source, path): + try: + command = '/usr/local/bin/ffmpeg -loglevel 0 -i '+ source + ' -vn -aq 6 -y ' + path + ' > /dev/null' + print command + os.system(command) + except: + pass + +def get_pids(name, args=None): + """Get a process pid filtered by arguments and uid""" + pids = [] + for proc in psutil.process_iter(): + if proc.cmdline: + if name == proc.name: + if args: + if args in proc.cmdline: + pids.append(proc.pid) + else: + pids.append(proc.pid) + return pids + +dir = sys.argv[-1] + +path = os.path.abspath(__file__) +pids = get_pids('python2.6',args=path) + +print datetime.datetime.now() +if len(pids) <= 1: + print 'starting process...' + f = FixCheckMedia(dir) + f.process() + print 'process finished.\n' +else: + print 'already started !\n' diff --git a/telemeta/util/transcode/transcode.py b/telemeta/util/transcode/transcode.py new file mode 100755 index 00000000..2abc7121 --- /dev/null +++ b/telemeta/util/transcode/transcode.py @@ -0,0 +1,46 @@ +#!/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('%(message)s') + self.hdlr.setFormatter(self.formatter) + self.logger.addHandler(self.hdlr) + self.logger.setLevel(logging.INFO) + +log_file = 'transcoding.log' +logger = Logger(log_file) +root_dir = sys.argv[-1] +args = sys.argv[1:-1] +source_format = 'webm' +done = [] +ffmpeg_args = {'mp3' : ' -vn -acodec libmp3lame -aq 6 -ac 1 ', + 'ogg' : ' -vn -acodec copy ', + 'mp4' : ' -vcodec libx264 -r 24 -b 512k -threads 6 -acodec libfaac -ar 48000 -ab 96k -ac 1 ', + } + +if os.path.exists(log_file): + f = open(log_file, 'r') + for line in f.readlines(): + done.append(line[:-1]) + f.close() + +for root, dirs, files in os.walk(root_dir): + for file in files: + path = os.path.abspath(root + os.sep + file) + name, ext = os.path.splitext(file) + if ext[1:] == source_format: + for format in ffmpeg_args.keys(): + dest = os.path.abspath(root + os.sep + name + '.' + format) + if not dest in done or '--force' in args: + command = 'ffmpeg -i ' + path + ffmpeg_args[format] + ' -y ' + dest + os.system(command) + logger.logger.info(dest) + +print "DONE!"