From 630a31988b7b215b6884eed3ade8e5daf107df22 Mon Sep 17 00:00:00 2001 From: yomguy Date: Mon, 4 Feb 2013 12:13:56 +0100 Subject: [PATCH] fix conf import, add tools --- .../commands/teleforma-import-conferences.py | 19 +++++-- tools/trans/create_thumbs.py | 42 +++++++++++++++ tools/trans/transcode.py | 46 ++++++++++++++++ tools/trans/transcode_preview_alpha.py | 53 +++++++++++++++++++ 4 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 tools/trans/create_thumbs.py create mode 100755 tools/trans/transcode.py create mode 100644 tools/trans/transcode_preview_alpha.py diff --git a/teleforma/management/commands/teleforma-import-conferences.py b/teleforma/management/commands/teleforma-import-conferences.py index 87034b36..7e399a60 100644 --- a/teleforma/management/commands/teleforma-import-conferences.py +++ b/teleforma/management/commands/teleforma-import-conferences.py @@ -31,6 +31,10 @@ class Command(BaseCommand): original_format = 'webm' transcoded_formats = ['mp4', 'ogg', 'mp3'] image_formats = ['png', 'jpg'] + ffmpeg_args = {'mp3' : ' -vn -acodec libmp3lame -aq 6 -ac 2 ', + 'ogg' : ' -vn -acodec copy ', + 'mp4' : ' -vcodec libx264 -r 24 -b 512k -threads 4 -acodec libfaac -ar 48000 -ab 96k -ac 2 ', + } def cleanup(self): medias = Media.objects.all() @@ -59,7 +63,6 @@ class Command(BaseCommand): self.media_dir = settings.MEDIA_ROOT + organization.name file_list = [] all_conferences = Conference.objects.all() - i = 1 # self.cleanup() @@ -109,7 +112,7 @@ class Command(BaseCommand): else: collection = collections[0] - id = '_'.join([collection_id, public_id, ext, str(i)]) + id = '_'.join([collection_id, public_id, ext]) items = MediaItem.objects.filter(collection=collection, code=id) if not items: @@ -134,14 +137,22 @@ class Command(BaseCommand): related.save() break + for format in ffmpeg_args.keys(): + filename = name + '.' + format + dest = os.path.abspath(root + os.sep + filename) + r_path = dir + os.sep + filename + if not os.path.exists(dest): + command = 'ffmpeg -i ' + path + ffmpeg_args[format] + ' -y ' + dest + os.system(command) + t, c = MediaItemTranscoded.objects.get_or_create(item=item, file=r_path) + media = Media(conference=conference) media.item = item media.course = conference.course media.course_type = conference.course_type + media.period = conference.period media.type = ext media.set_mime_type() media.save() conference.save() logger.logger.info(path) - i += 1 - diff --git a/tools/trans/create_thumbs.py b/tools/trans/create_thumbs.py new file mode 100644 index 00000000..dc3fd206 --- /dev/null +++ b/tools/trans/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/tools/trans/transcode.py b/tools/trans/transcode.py new file mode 100755 index 00000000..2abc7121 --- /dev/null +++ b/tools/trans/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!" diff --git a/tools/trans/transcode_preview_alpha.py b/tools/trans/transcode_preview_alpha.py new file mode 100644 index 00000000..9efbf7c8 --- /dev/null +++ b/tools/trans/transcode_preview_alpha.py @@ -0,0 +1,53 @@ +#!/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 = 'preview.log' +logger = Logger(log_file) +root_dir = sys.argv[-1] +args = sys.argv[1:-1] +source_format = ['webm', 'mp4', 'ogg', 'mp3'] +done = [] +preview_tc_in = '00:00:00' +preview_tc_out = '00:03:00' +vfilter = "fade=out:4270:50" +preview_dir = 'preview' +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:] in source_format and not preview_dir in root: + dest_dir = root + os.sep + preview_dir + if not os.path.exists(dest_dir): + os.mkdir(dest_dir) + dest = os.path.abspath(dest_dir + os.sep + name + '.preview' + ext) + if not dest in done or '--force' in args: + command = 'ffmpeg -ss '+ preview_tc_in + ' -t ' + preview_tc_out + \ + ' -i ' + path + ' -vcodec copy -acodec copy -y ' + dest + os.system(command) + logger.logger.info(dest) + +print "DONE!" -- 2.39.5