self.streaming = streaming
if not self.filename and not self.streaming:
raise Exception('Must give an output')
-
+
self.metadata = None
self.eod = False
-
+
@interfacedoc
- def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- self.channels = channels
- super(Mp3Encoder, self).setup(channels, samplerate, blocksize, totalframes)
- #TODO: open file for writing
- # the output data format we want
+ def setup(self, channels=None, samplerate=None, nframes=None):
+ super(Mp3Encoder, self).setup(channels, samplerate, nframes)
+
self.pipe = '''appsrc name=src
- ! audioconvert
- ! lamemp3enc target=quality quality=2 encoding-engine-quality=standard ! id3v2mux
+ ! audioconvert
+ ! lamemp3enc target=quality quality=2 encoding-engine-quality=standard ! id3v2mux
'''
if self.filename and self.streaming:
self.pipe += ''' ! tee name=t
id3.save()
except:
raise IOError('EncoderError: cannot write tags')
-
+
- @interfacedoc
- def process(self, frames, eod=False):
- self.eod = eod
- buf = numpy_array_to_gst_buffer(frames)
- self.src.emit('push-buffer', buf)
- if self.streaming:
- self.chunk = self.app.emit('pull-buffer')
- if self.eod and self.metadata and self.filename:
- self.write_metadata()
- return frames, eod
-
class Mp3EncoderSubprocess(object):
"""MP3 encoder in a subprocess pipe"""