summaryrefslogtreecommitdiff
path: root/recode.py
diff options
context:
space:
mode:
Diffstat (limited to 'recode.py')
-rw-r--r--recode.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/recode.py b/recode.py
index 8b3ebb0..e67328e 100644
--- a/recode.py
+++ b/recode.py
@@ -33,8 +33,14 @@ class Codec(object):
class FFmpeg(Decoder):
decoder_name = 'ffmpeg'
- def decode(self, source, dest, *args):
- cmd = (x.format(infile = source, outfile = dest) for x in 'ffmpeg -loglevel quiet -i {infile} -y {outfile}'.split())
+ def decode(self, source, dest, *args, **kwargs):
+ cmd = 'ffmpeg -loglevel quiet'.split()
+ if 'start_time' in kwargs:
+ cmd += ['-ss', str(kwargs['start_time'])]
+ if 'end_time' in kwargs and kwargs['end_time']:
+ cmd += ['-t', str(kwargs['end_time'] - kwargs['start_time'])]
+ cmd += ['-i', source, '-y', dest]
+ #cmd = (x.format(infile = source, outfile = dest) for x in 'ffmpeg -loglevel quiet -i {infile} -y {outfile}'.split())
p = subprocess.Popen(cmd, stderr = subprocess.PIPE, close_fds = True)
p.stderr.close()
p.wait()
@@ -42,7 +48,7 @@ class FFmpeg(Decoder):
class Ogg(Encoder):
encoder_name = 'ogg'
- def encode(self, source, dest, *args):
+ def encode(self, source, dest, *args, **kwargs):
options = config.get('options', 'encoder/ogg', '')
cmd = ['oggenc', '-Q'] + options.split() + [source, '-o', dest]
subprocess.call(cmd)
@@ -52,18 +58,13 @@ class Recoder(object):
self.decoder = decoder
self.encoder = encoder
- def recode(self, source, dest):
+ def recode(self, source, dest, **kwargs):
if self.decoder.__class__ == self.encoder.__class__ and hasattr(self.decoder, 'recode'):
- print 'recoding'
- print self.decoder
self.decoder.recode(source, dest)
else:
with tempfile.NamedTemporaryFile(mode = 'wb', prefix = 'foo', suffix = '.wav', delete = True) as temp:
- print 'temp file:', temp.name
- print 'decoding'
- self.decoder.decode(source, temp.name)
- print 'encoding'
- self.encoder.encode(temp.name, dest)
+ self.decoder.decode(source, temp.name, **kwargs)
+ self.encoder.encode(temp.name, dest, **kwargs)
class RecodeThread(threading.Thread):
lock = threading.Lock()