diff options
Diffstat (limited to 'recode.py')
-rw-r--r-- | recode.py | 23 |
1 files changed, 12 insertions, 11 deletions
@@ -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() |