from m4a import AacEncoder
from webm import WebMEncoder
from audiosink import AudioSink
-from opus import OpusEncoder
\ No newline at end of file
+from opus import OpusEncoder
from timeside.api import IEncoder
from timeside.tools import *
+
class AudioSink(GstEncoder):
+
"""gstreamer-based Audio Sink
This encoder plays the decoded audio stream to the sound card
if os.path.isdir(output):
raise IOError("Encoder output must be a file, not a directory")
elif os.path.isfile(output) and not overwrite:
- raise IOError("Encoder output %s exists, but overwrite set to False")
+ raise IOError(
+ "Encoder output %s exists, but overwrite set to False")
self.filename = output
else:
self.filename = None
self.end_cond.release()
def _on_new_buffer_streaming(self, appsink):
- #print 'pull-buffer'
+ # print 'pull-buffer'
chunk = appsink.emit('pull-buffer')
self._streaming_queue.put(chunk)
class FlacEncoder(GstEncoder):
+
""" gstreamer-based FLAC encoder """
implements(IEncoder)
@interfacedoc
def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- super(FlacEncoder, self).setup(channels, samplerate, blocksize, totalframes)
+ super(FlacEncoder, self).setup(
+ channels, samplerate, blocksize, totalframes)
self.pipe = ''' appsrc name=src ! audioconvert
! flacenc '''
t. ! queue ! appsink name=app sync=False
''' % self.filename
- elif self.filename :
+ elif self.filename:
self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
else:
self.pipe += '! queue ! appsink name=app sync=False '
self.start_pipeline(channels, samplerate)
-
@staticmethod
@interfacedoc
def id():
class AacEncoder(GstEncoder):
+
""" gstreamer-based AAC encoder """
implements(IEncoder)
- def __init__(self, output, streaming = False, overwrite = False):
+ def __init__(self, output, streaming=False, overwrite=False):
super(AacEncoder, self).__init__(output, streaming, overwrite)
if self.streaming:
raise Exception("Streaming not supported")
@interfacedoc
def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- super(AacEncoder, self).setup(channels, samplerate, blocksize, totalframes)
+ super(AacEncoder, self).setup(
+ channels, samplerate, blocksize, totalframes)
self.streaming = False
self.pipe = ''' appsrc name=src
t. ! queue ! appsink name=app sync=False
''' % self.filename
- elif self.filename :
+ elif self.filename:
self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
else:
self.pipe += '! queue ! appsink name=app sync=False '
self.start_pipeline(channels, samplerate)
-
@staticmethod
@interfacedoc
def id():
from timeside.api import IEncoder
-
class Mp3Encoder(GstEncoder):
+
""" gstreamer-based MP3 encoder """
implements(IEncoder)
try:
id3.add(frame)
except:
- raise IOError('EncoderError: cannot tag "'+tag+'"')
+ raise IOError('EncoderError: cannot tag "' + tag + '"')
try:
id3.save()
except:
from timeside.api import IEncoder
from timeside.tools import *
+
class VorbisEncoder(GstEncoder):
+
""" gstreamer-based OGG Vorbis encoder """
implements(IEncoder)
@interfacedoc
def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- super(VorbisEncoder, self).setup(channels, samplerate, blocksize, totalframes)
+ super(VorbisEncoder, self).setup(
+ channels, samplerate, blocksize, totalframes)
self.pipe = ''' appsrc name=src
! audioconvert ! audioresample
! vorbisenc quality=0.9
t. ! queue ! appsink name=app sync=False
''' % self.filename
- elif self.filename :
+ elif self.filename:
self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
else:
self.pipe += '! queue ! appsink name=app sync=False '
self.start_pipeline(channels, samplerate)
-
@staticmethod
@interfacedoc
def id():
@interfacedoc
def set_metadata(self, metadata):
self.metadata = metadata
-
class OpusEncoder(GstEncoder):
+
""" gstreamer-based Opus encoder """
implements(IEncoder)
class WavEncoder(GstEncoder):
+
""" gstreamer-based WAV encoder """
implements(IEncoder)
@interfacedoc
def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- super(WavEncoder, self).setup(channels, samplerate, blocksize, totalframes)
+ super(WavEncoder, self).setup(
+ channels, samplerate, blocksize, totalframes)
self.pipe = ''' appsrc name=src
! audioconvert
t. ! queue ! appsink name=app sync=False
''' % self.filename
- elif self.filename :
+ elif self.filename:
self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
else:
self.pipe += '! queue ! appsink name=app sync=False '
self.start_pipeline(channels, samplerate)
-
@staticmethod
@interfacedoc
def id():
@interfacedoc
def set_metadata(self, metadata):
- #TODO
+ # TODO
pass
class WebMEncoder(GstEncoder):
+
""" gstreamer-based WebM encoder """
implements(IEncoder)