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 implements, interfacedoc
23 from timeside.encoder.core import GstEncoder
24 from timeside.api import IEncoder
25 from timeside.tools import *
29 """ gstreamer-based AAC encoder """
30 implements(IEncoder)
31
32 - def __init__(self, output, streaming = False, overwrite = False):
33 super(AacEncoder, self).__init__(output, streaming, overwrite)
34 if self.streaming:
35 raise Exception("Streaming not supported")
36
37 @interfacedoc
38 - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
39 super(AacEncoder, self).setup(channels, samplerate, blocksize, totalframes)
40
41 self.streaming = False
42 self.pipe = ''' appsrc name=src
43 ! audioconvert
44 ! voaacenc
45 ! mp4mux
46 '''
47
48 if self.filename and self.streaming:
49 self.pipe += ''' ! tee name=t
50 ! queue ! filesink location=%s
51 t. ! queue ! appsink name=app sync=False
52 ''' % self.filename
53
54 elif self.filename :
55 self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
56 else:
57 self.pipe += '! queue ! appsink name=app sync=False '
58
59 self.start_pipeline(channels, samplerate)
60
61
62 @staticmethod
63 @interfacedoc
66
67 @staticmethod
68 @interfacedoc
70 return "AAC GStreamer based encoder"
71
72 @staticmethod
73 @interfacedoc
76
77 @staticmethod
78 @interfacedoc
81
82 @staticmethod
83 @interfacedoc
86
87 @interfacedoc
90