1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from timeside.core import Processor, implements, interfacedoc
23 from timeside.encoder.core import GstEncoder
24 from timeside.api import IEncoder
25 from timeside.tools import *
28 """ gstreamer-based vorbis encoder """
29 implements(IEncoder)
30
31 @interfacedoc
32 - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
33 super(VorbisEncoder, self).setup(channels, samplerate, blocksize, totalframes)
34 self.pipe = ''' appsrc name=src
35 ! audioconvert
36 ! vorbisenc quality=0.9
37 ! oggmux
38 '''
39
40 if self.filename and self.streaming:
41 self.pipe += ''' ! tee name=t
42 ! queue ! filesink location=%s
43 t. ! queue ! appsink name=app sync=False
44 ''' % self.filename
45
46 elif self.filename :
47 self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
48 else:
49 self.pipe += '! queue ! appsink name=app sync=False '
50
51 self.start_pipeline(channels, samplerate)
52
53
54 @staticmethod
55 @interfacedoc
57 return "gst_vorbis_enc"
58
59 @staticmethod
60 @interfacedoc
62 return "Vorbis GStreamer based encoder"
63
64 @staticmethod
65 @interfacedoc
68
69 @staticmethod
70 @interfacedoc
73
74 @staticmethod
75 @interfacedoc
77 return "application/ogg"
78
79 @interfacedoc
82