1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from flumotion.component import feedcomponent
23 from flumotion.common import errors, gstreamer, messages
24 from flumotion.component.effects.volume import volume
25
26 from flumotion.common.messages import N_
27 T_ = messages.gettexter('flumotion')
28
29 -class Screencast(feedcomponent.ParseLaunchComponent):
31 def getProps():
32 ret = []
33 for k, default in (('width', 320),
34 ('height', 240),
35 ('x-offset', 0),
36 ('y-offset', 0),
37 ('framerate', (5, 1))):
38 ret.append(properties.get(k, default))
39 return ret
40 width, height, x_offset, y_offset, framerate = getProps()
41
42 src = 'ximagesrc'
43 if not gstreamer.element_factory_exists(src):
44 raise errors.MissingElementError(src)
45
46 return ('%s startx=%d starty=%d endx=%d endy=%d use-damage=false'
47 ' ! ffmpegcolorspace'
48 ' ! video/x-raw-yuv,framerate=(fraction)%s,format=(fourcc)I420'
49 % (src, x_offset, y_offset, width + x_offset, height + y_offset,
50 '%d/%d' % framerate))
51